4084a1:	83 c4 0c             	add    $0xc,%esp
4084a4:	8d 46 ff             	lea    -0x1(%esi),%eax
4084a7:	5f                   	pop    %edi
4084a8:	5e                   	pop    %esi
4084a9:	5b                   	pop    %ebx
4084aa:	c9                   	leave
4084ab:	c2 10 00             	ret    $0x10
4084ae:	55                   	push   %ebp
4084af:	8b ec                	mov    %esp,%ebp
4084b1:	83 ec 18             	sub    $0x18,%esp
4084b4:	8b 45 0c             	mov    0xc(%ebp),%eax
4084b7:	53                   	push   %ebx
4084b8:	56                   	push   %esi
4084b9:	57                   	push   %edi
4084ba:	8a 58 04             	mov    0x4(%eax),%bl
4084bd:	8b 50 08             	mov    0x8(%eax),%edx
4084c0:	8b 38                	mov    (%eax),%edi
4084c2:	8b 40 10             	mov    0x10(%eax),%eax
4084c5:	88 5d 0f             	mov    %bl,0xf(%ebp)
4084c8:	8b 5d 08             	mov    0x8(%ebp),%ebx
4084cb:	89 4d f8             	mov    %ecx,-0x8(%ebp)
4084ce:	89 55 fc             	mov    %edx,-0x4(%ebp)
4084d1:	89 45 f4             	mov    %eax,-0xc(%ebp)
4084d4:	3b c3                	cmp    %ebx,%eax
4084d6:	0f 8e b9 00 00 00    	jle    0x408595
4084dc:	8b 75 14             	mov    0x14(%ebp),%esi
4084df:	8b 45 10             	mov    0x10(%ebp),%eax
4084e2:	85 f6                	test   %esi,%esi
4084e4:	74 08                	je     0x4084ee
4084e6:	80 7c 30 ff 30       	cmpb   $0x30,-0x1(%eax,%esi,1)
4084eb:	75 01                	jne    0x4084ee
4084ed:	4e                   	dec    %esi
4084ee:	8b 4d f4             	mov    -0xc(%ebp),%ecx
4084f1:	03 ce                	add    %esi,%ecx
4084f3:	c7 45 f0 04 00 00 00 	movl   $0x4,-0x10(%ebp)
4084fa:	6a 30                	push   $0x30
4084fc:	5a                   	pop    %edx
4084fd:	89 4d e8             	mov    %ecx,-0x18(%ebp)
408500:	3b cf                	cmp    %edi,%ecx
408502:	8b 4d f8             	mov    -0x8(%ebp),%ecx
408505:	66 89 55 ec          	mov    %dx,-0x14(%ebp)
408509:	8b 55 fc             	mov    -0x4(%ebp),%edx
40850c:	72 11                	jb     0x40851f
40850e:	56                   	push   %esi
40850f:	50                   	push   %eax
408510:	8d 45 e8             	lea    -0x18(%ebp),%eax
408513:	50                   	push   %eax
408514:	53                   	push   %ebx
408515:	e8 c5 fd ff ff       	call   0x4082df
40851a:	e9 60 01 00 00       	jmp    0x40867f
40851f:	8b 41 04             	mov    0x4(%ecx),%eax
408522:	89 45 14             	mov    %eax,0x14(%ebp)
408525:	3b 78 0c             	cmp    0xc(%eax),%edi
408528:	76 0e                	jbe    0x408538
40852a:	8b 00                	mov    (%eax),%eax
40852c:	8b 4d 14             	mov    0x14(%ebp),%ecx
40852f:	57                   	push   %edi
408530:	ff 10                	call   *(%eax)
408532:	8b 4d f8             	mov    -0x8(%ebp),%ecx
408535:	8b 55 fc             	mov    -0x4(%ebp),%edx
408538:	8b 45 f4             	mov    -0xc(%ebp),%eax
40853b:	03 c6                	add    %esi,%eax
40853d:	2b f8                	sub    %eax,%edi
40853f:	0f b6 45 0f          	movzbl 0xf(%ebp),%eax
408543:	89 45 14             	mov    %eax,0x14(%ebp)
408546:	83 fa 01             	cmp    $0x1,%edx
408549:	74 13                	je     0x40855e
40854b:	57                   	push   %edi
40854c:	e8 ab 98 01 00       	call   0x421dfc
408551:	57                   	push   %edi
408552:	ff 75 14             	push   0x14(%ebp)
408555:	50                   	push   %eax
408556:	e8 05 b9 03 00       	call   0x443e60
40855b:	83 c4 0c             	add    $0xc,%esp
40855e:	56                   	push   %esi
40855f:	ff 75 10             	push   0x10(%ebp)
408562:	8b 75 f8             	mov    -0x8(%ebp),%esi
408565:	8d 45 e8             	lea    -0x18(%ebp),%eax
408568:	50                   	push   %eax
408569:	53                   	push   %ebx
40856a:	8b ce                	mov    %esi,%ecx
40856c:	e8 6e fd ff ff       	call   0x4082df
408571:	83 7d fc 01          	cmpl   $0x1,-0x4(%ebp)
408575:	8b d8                	mov    %eax,%ebx
408577:	75 15                	jne    0x40858e
408579:	57                   	push   %edi
40857a:	8b ce                	mov    %esi,%ecx
40857c:	e8 7b 98 01 00       	call   0x421dfc
408581:	57                   	push   %edi
408582:	ff 75 14             	push   0x14(%ebp)
408585:	50                   	push   %eax
408586:	e8 d5 b8 03 00       	call   0x443e60
40858b:	83 c4 0c             	add    $0xc,%esp
40858e:	8b c3                	mov    %ebx,%eax
408590:	e9 ea 00 00 00       	jmp    0x40867f
408595:	03 5d 14             	add    0x14(%ebp),%ebx
408598:	3b fb                	cmp    %ebx,%edi
40859a:	77 25                	ja     0x4085c1
40859c:	53                   	push   %ebx
40859d:	e8 5a 98 01 00       	call   0x421dfc
4085a2:	8b 55 10             	mov    0x10(%ebp),%edx
4085a5:	8b f0                	mov    %eax,%esi
4085a7:	8b 4d 14             	mov    0x14(%ebp),%ecx
4085aa:	56                   	push   %esi
4085ab:	03 ca                	add    %edx,%ecx
4085ad:	51                   	push   %ecx
4085ae:	52                   	push   %edx
4085af:	e8 6b 05 00 00       	call   0x408b1f
4085b4:	8d 43 ff             	lea    -0x1(%ebx),%eax
4085b7:	83 c4 0c             	add    $0xc,%esp
4085ba:	03 c6                	add    %esi,%eax
4085bc:	e9 be 00 00 00       	jmp    0x40867f
4085c1:	57                   	push   %edi
4085c2:	e8 35 98 01 00       	call   0x421dfc
4085c7:	8b 4d fc             	mov    -0x4(%ebp),%ecx
4085ca:	8b f0                	mov    %eax,%esi
4085cc:	8d 04 3e             	lea    (%esi,%edi,1),%eax
4085cf:	89 45 f4             	mov    %eax,-0xc(%ebp)
4085d2:	83 f9 01             	cmp    $0x1,%ecx
4085d5:	75 28                	jne    0x4085ff
4085d7:	8b 55 10             	mov    0x10(%ebp),%edx
4085da:	8b 4d 14             	mov    0x14(%ebp),%ecx
4085dd:	56                   	push   %esi
4085de:	03 ca                	add    %edx,%ecx
4085e0:	51                   	push   %ecx
4085e1:	52                   	push   %edx
4085e2:	e8 38 05 00 00       	call   0x408b1f
4085e7:	8b 7d f4             	mov    -0xc(%ebp),%edi
4085ea:	03 f3                	add    %ebx,%esi
4085ec:	0f b6 45 0f          	movzbl 0xf(%ebp),%eax
4085f0:	2b fe                	sub    %esi,%edi
4085f2:	57                   	push   %edi
4085f3:	50                   	push   %eax
4085f4:	56                   	push   %esi
4085f5:	e8 66 b8 03 00       	call   0x443e60
4085fa:	83 c4 18             	add    $0x18,%esp
4085fd:	eb 7d                	jmp    0x40867c
4085ff:	83 f9 03             	cmp    $0x3,%ecx
408602:	75 2a                	jne    0x40862e
408604:	8a 45 0f             	mov    0xf(%ebp),%al
408607:	66 98                	cbtw
408609:	0f b7 c0             	movzwl %ax,%eax
40860c:	50                   	push   %eax
40860d:	53                   	push   %ebx
40860e:	57                   	push   %edi
40860f:	56                   	push   %esi
408610:	e8 34 88 01 00       	call   0x420e49
408615:	8b 4d 10             	mov    0x10(%ebp),%ecx
408618:	8b f0                	mov    %eax,%esi
40861a:	8b 45 14             	mov    0x14(%ebp),%eax
40861d:	56                   	push   %esi
40861e:	03 c1                	add    %ecx,%eax
408620:	50                   	push   %eax
408621:	51                   	push   %ecx
408622:	e8 f8 04 00 00       	call   0x408b1f
408627:	83 c4 1c             	add    $0x1c,%esp
40862a:	03 f3                	add    %ebx,%esi
40862c:	eb 4e                	jmp    0x40867c
40862e:	83 f9 04             	cmp    $0x4,%ecx
408631:	75 1b                	jne    0x40864e
408633:	8b 45 14             	mov    0x14(%ebp),%eax
408636:	85 c0                	test   %eax,%eax
408638:	74 29                	je     0x408663
40863a:	8b 4d 10             	mov    0x10(%ebp),%ecx
40863d:	03 c1                	add    %ecx,%eax
40863f:	56                   	push   %esi
408640:	50                   	push   %eax
408641:	51                   	push   %ecx
408642:	e8 d8 04 00 00       	call   0x408b1f
408647:	8b 5d 08             	mov    0x8(%ebp),%ebx
40864a:	8b f0                	mov    %eax,%esi
40864c:	eb 12                	jmp    0x408660
40864e:	8b 4d 10             	mov    0x10(%ebp),%ecx
408651:	2b c3                	sub    %ebx,%eax
408653:	50                   	push   %eax
408654:	8b 45 14             	mov    0x14(%ebp),%eax
408657:	03 c1                	add    %ecx,%eax
408659:	50                   	push   %eax
40865a:	51                   	push   %ecx
40865b:	e8 bf 04 00 00       	call   0x408b1f
408660:	83 c4 0c             	add    $0xc,%esp
408663:	8b 45 f4             	mov    -0xc(%ebp),%eax
408666:	0f b6 4d 0f          	movzbl 0xf(%ebp),%ecx
40866a:	2b c6                	sub    %esi,%eax
40866c:	2b c3                	sub    %ebx,%eax
40866e:	50                   	push   %eax
40866f:	51                   	push   %ecx
408670:	56                   	push   %esi
408671:	e8 ea b7 03 00       	call   0x443e60
408676:	8b 75 f4             	mov    -0xc(%ebp),%esi
408679:	83 c4 0c             	add    $0xc,%esp
40867c:	8d 46 ff             	lea    -0x1(%esi),%eax
40867f:	5f                   	pop    %edi
408680:	5e                   	pop    %esi
408681:	5b                   	pop    %ebx
408682:	c9                   	leave
408683:	c2 10 00             	ret    $0x10
408686:	55                   	push   %ebp
408687:	8b ec                	mov    %esp,%ebp
408689:	51                   	push   %ecx
40868a:	ff 75 20             	push   0x20(%ebp)
40868d:	8d 45 fc             	lea    -0x4(%ebp),%eax
408690:	ff 75 1c             	push   0x1c(%ebp)
408693:	ff 75 18             	push   0x18(%ebp)
408696:	ff 75 14             	push   0x14(%ebp)
408699:	ff 75 10             	push   0x10(%ebp)
40869c:	ff 75 0c             	push   0xc(%ebp)
40869f:	50                   	push   %eax
4086a0:	e8 05 cd ff ff       	call   0x4053aa
4086a5:	83 c4 1c             	add    $0x1c,%esp
4086a8:	8b 08                	mov    (%eax),%ecx
4086aa:	8b 45 08             	mov    0x8(%ebp),%eax
4086ad:	89 08                	mov    %ecx,(%eax)
4086af:	c9                   	leave
4086b0:	c3                   	ret
4086b1:	6a 28                	push   $0x28
4086b3:	b8 34 ad 48 00       	mov    $0x48ad34,%eax
4086b8:	e8 c1 73 03 00       	call   0x43fa7e
4086bd:	33 d2                	xor    %edx,%edx
4086bf:	89 55 fc             	mov    %edx,-0x4(%ebp)
4086c2:	33 c9                	xor    %ecx,%ecx
4086c4:	8b 75 08             	mov    0x8(%ebp),%esi
4086c7:	8b 7d 10             	mov    0x10(%ebp),%edi
4086ca:	8b 45 14             	mov    0x14(%ebp),%eax
4086cd:	89 75 d0             	mov    %esi,-0x30(%ebp)
4086d0:	89 55 d4             	mov    %edx,-0x2c(%ebp)
4086d3:	89 56 10             	mov    %edx,0x10(%esi)
4086d6:	c7 46 14 07 00 00 00 	movl   $0x7,0x14(%esi)
4086dd:	66 89 0e             	mov    %cx,(%esi)
4086e0:	89 55 fc             	mov    %edx,-0x4(%ebp)
4086e3:	33 db                	xor    %ebx,%ebx
4086e5:	43                   	inc    %ebx
4086e6:	8d 4d d8             	lea    -0x28(%ebp),%ecx
4086e9:	50                   	push   %eax
4086ea:	89 5d d4             	mov    %ebx,-0x2c(%ebp)
4086ed:	e8 6c 2c 00 00       	call   0x40b35e
4086f2:	89 5d fc             	mov    %ebx,-0x4(%ebp)
4086f5:	8b 4d 0c             	mov    0xc(%ebp),%ecx
4086f8:	8b d1                	mov    %ecx,%edx
4086fa:	83 79 14 08          	cmpl   $0x8,0x14(%ecx)
4086fe:	72 02                	jb     0x408702
408700:	8b 11                	mov    (%ecx),%edx
408702:	8b 41 10             	mov    0x10(%ecx),%eax
408705:	8d 04 42             	lea    (%edx,%eax,2),%eax
408708:	72 02                	jb     0x40870c
40870a:	8b 09                	mov    (%ecx),%ecx
40870c:	ff 75 18             	push   0x18(%ebp)
40870f:	8d 55 d8             	lea    -0x28(%ebp),%edx
408712:	52                   	push   %edx
408713:	57                   	push   %edi
408714:	50                   	push   %eax
408715:	51                   	push   %ecx
408716:	8d 45 cc             	lea    -0x34(%ebp),%eax
408719:	56                   	push   %esi
40871a:	50                   	push   %eax
40871b:	e8 66 ff ff ff       	call   0x408686
408720:	83 c4 1c             	add    $0x1c,%esp
408723:	c6 45 fc 00          	movb   $0x0,-0x4(%ebp)
408727:	8d 4d d8             	lea    -0x28(%ebp),%ecx
40872a:	e8 cb 4b 01 00       	call   0x41d2fa
40872f:	8b c6                	mov    %esi,%eax
408731:	e8 f2 72 03 00       	call   0x43fa28
408736:	c3                   	ret
408737:	6a 04                	push   $0x4
408739:	b8 72 ad 48 00       	mov    $0x48ad72,%eax
40873e:	e8 07 73 03 00       	call   0x43fa4a
408743:	33 c9                	xor    %ecx,%ecx
408745:	89 4d fc             	mov    %ecx,-0x4(%ebp)
408748:	33 c0                	xor    %eax,%eax
40874a:	89 4d f0             	mov    %ecx,-0x10(%ebp)
40874d:	8b 75 08             	mov    0x8(%ebp),%esi
408750:	89 4e 10             	mov    %ecx,0x10(%esi)
408753:	c7 46 14 07 00 00 00 	movl   $0x7,0x14(%esi)
40875a:	66 89 06             	mov    %ax,(%esi)
40875d:	89 4d fc             	mov    %ecx,-0x4(%ebp)
408760:	8b 55 0c             	mov    0xc(%ebp),%edx
408763:	8b ca                	mov    %edx,%ecx
408765:	c7 45 f0 01 00 00 00 	movl   $0x1,-0x10(%ebp)
40876c:	83 7a 14 08          	cmpl   $0x8,0x14(%edx)
408770:	72 02                	jb     0x408774
408772:	8b 0a                	mov    (%edx),%ecx
408774:	8b 42 10             	mov    0x10(%edx),%eax
408777:	8d 0c 41             	lea    (%ecx,%eax,2),%ecx
40877a:	72 02                	jb     0x40877e
40877c:	8b 12                	mov    (%edx),%edx
40877e:	ff 75 18             	push   0x18(%ebp)
408781:	8d 45 0c             	lea    0xc(%ebp),%eax
408784:	ff 75 14             	push   0x14(%ebp)
408787:	ff 75 10             	push   0x10(%ebp)
40878a:	51                   	push   %ecx
40878b:	52                   	push   %edx
40878c:	56                   	push   %esi
40878d:	50                   	push   %eax
40878e:	e8 f3 fe ff ff       	call   0x408686
408793:	83 c4 1c             	add    $0x1c,%esp
408796:	8b c6                	mov    %esi,%eax
408798:	e8 76 72 03 00       	call   0x43fa13
40879d:	c3                   	ret
40879e:	6a 30                	push   $0x30
4087a0:	b8 b6 ad 48 00       	mov    $0x48adb6,%eax
4087a5:	e8 d4 72 03 00       	call   0x43fa7e
4087aa:	8b f9                	mov    %ecx,%edi
4087ac:	33 db                	xor    %ebx,%ebx
4087ae:	89 5d fc             	mov    %ebx,-0x4(%ebp)
4087b1:	8b 75 08             	mov    0x8(%ebp),%esi
4087b4:	8b 45 0c             	mov    0xc(%ebp),%eax
4087b7:	8b 55 10             	mov    0x10(%ebp),%edx
4087ba:	89 75 c4             	mov    %esi,-0x3c(%ebp)
4087bd:	89 5d c8             	mov    %ebx,-0x38(%ebp)
4087c0:	89 5e 10             	mov    %ebx,0x10(%esi)
4087c3:	c7 46 14 0f 00 00 00 	movl   $0xf,0x14(%esi)
4087ca:	88 1e                	mov    %bl,(%esi)
4087cc:	89 5d fc             	mov    %ebx,-0x4(%ebp)
4087cf:	c7 45 c8 01 00 00 00 	movl   $0x1,-0x38(%ebp)
4087d6:	3b c2                	cmp    %edx,%eax
4087d8:	74 5f                	je     0x408839
4087da:	ff 75 c4             	push   -0x3c(%ebp)
4087dd:	8d 4d cc             	lea    -0x34(%ebp),%ecx
4087e0:	89 5d cc             	mov    %ebx,-0x34(%ebp)
4087e3:	52                   	push   %edx
4087e4:	50                   	push   %eax
4087e5:	89 5d d0             	mov    %ebx,-0x30(%ebp)
4087e8:	89 5d d4             	mov    %ebx,-0x2c(%ebp)
4087eb:	e8 f3 c2 ff ff       	call   0x404ae3
4087f0:	c7 45 fc 01 00 00 00 	movl   $0x1,-0x4(%ebp)
4087f7:	8b 4f 04             	mov    0x4(%edi),%ecx
4087fa:	ff 75 d0             	push   -0x30(%ebp)
4087fd:	ff 75 cc             	push   -0x34(%ebp)
408800:	8b 01                	mov    (%ecx),%eax
408802:	ff 50 0c             	call   *0xc(%eax)
408805:	ff 75 d0             	push   -0x30(%ebp)
408808:	8b 0f                	mov    (%edi),%ecx
40880a:	8d 45 d8             	lea    -0x28(%ebp),%eax
40880d:	ff 75 cc             	push   -0x34(%ebp)
408810:	50                   	push   %eax
408811:	e8 76 aa 01 00       	call   0x42328c
408816:	c6 45 fc 02          	movb   $0x2,-0x4(%ebp)
40881a:	8b ce                	mov    %esi,%ecx
40881c:	50                   	push   %eax
40881d:	e8 ab 6e 00 00       	call   0x40f6cd
408822:	c6 45 fc 01          	movb   $0x1,-0x4(%ebp)
408826:	8d 4d d8             	lea    -0x28(%ebp),%ecx
408829:	e8 a6 4a 01 00       	call   0x41d2d4
40882e:	88 5d fc             	mov    %bl,-0x4(%ebp)
408831:	8d 4d cc             	lea    -0x34(%ebp),%ecx
408834:	e8 16 48 01 00       	call   0x41d04f
408839:	8b c6                	mov    %esi,%eax
40883b:	e8 e8 71 03 00       	call   0x43fa28
408840:	c2 0c 00             	ret    $0xc
408843:	6a 34                	push   $0x34