4082e8:	53                   	push   %ebx
4082e9:	8b 5d 08             	mov    0x8(%ebp),%ebx
4082ec:	89 4d fc             	mov    %ecx,-0x4(%ebp)
4082ef:	8b 50 08             	mov    0x8(%eax),%edx
4082f2:	89 55 f8             	mov    %edx,-0x8(%ebp)
4082f5:	56                   	push   %esi
4082f6:	57                   	push   %edi
4082f7:	8b 38                	mov    (%eax),%edi
4082f9:	8a 40 04             	mov    0x4(%eax),%al
4082fc:	88 45 0f             	mov    %al,0xf(%ebp)
4082ff:	83 fb ff             	cmp    $0xffffffff,%ebx
408302:	0f 8d b5 00 00 00    	jge    0x4083bd
408308:	8b 75 14             	mov    0x14(%ebp),%esi
40830b:	8b 45 10             	mov    0x10(%ebp),%eax
40830e:	85 f6                	test   %esi,%esi
408310:	74 08                	je     0x40831a
408312:	80 7c 30 ff 30       	cmpb   $0x30,-0x1(%eax,%esi,1)
408317:	75 01                	jne    0x40831a
408319:	4e                   	dec    %esi
40831a:	8d 4e ff             	lea    -0x1(%esi),%ecx
40831d:	c7 45 f4 04 00 00 00 	movl   $0x4,-0xc(%ebp)
408324:	6a 30                	push   $0x30
408326:	5b                   	pop    %ebx
408327:	89 4d ec             	mov    %ecx,-0x14(%ebp)
40832a:	3b cf                	cmp    %edi,%ecx
40832c:	8b 4d fc             	mov    -0x4(%ebp),%ecx
40832f:	66 89 5d f0          	mov    %bx,-0x10(%ebp)
408333:	8b 5d 08             	mov    0x8(%ebp),%ebx
408336:	72 11                	jb     0x408349
408338:	56                   	push   %esi
408339:	50                   	push   %eax
40833a:	8d 45 ec             	lea    -0x14(%ebp),%eax
40833d:	50                   	push   %eax
40833e:	53                   	push   %ebx
40833f:	e8 9b ff ff ff       	call   0x4082df
408344:	e9 5e 01 00 00       	jmp    0x4084a7
408349:	8b 41 04             	mov    0x4(%ecx),%eax
40834c:	89 45 14             	mov    %eax,0x14(%ebp)
40834f:	3b 78 0c             	cmp    0xc(%eax),%edi
408352:	76 0e                	jbe    0x408362
408354:	8b 00                	mov    (%eax),%eax
408356:	8b 4d 14             	mov    0x14(%ebp),%ecx
408359:	57                   	push   %edi
40835a:	ff 10                	call   *(%eax)
40835c:	8b 4d fc             	mov    -0x4(%ebp),%ecx
40835f:	8b 55 f8             	mov    -0x8(%ebp),%edx
408362:	8d 46 ff             	lea    -0x1(%esi),%eax
408365:	2b f8                	sub    %eax,%edi
408367:	0f b6 45 0f          	movzbl 0xf(%ebp),%eax
40836b:	89 45 14             	mov    %eax,0x14(%ebp)
40836e:	83 fa 01             	cmp    $0x1,%edx
408371:	74 13                	je     0x408386
408373:	57                   	push   %edi
408374:	e8 83 9a 01 00       	call   0x421dfc
408379:	57                   	push   %edi
40837a:	ff 75 14             	push   0x14(%ebp)
40837d:	50                   	push   %eax
40837e:	e8 dd ba 03 00       	call   0x443e60
408383:	83 c4 0c             	add    $0xc,%esp
408386:	56                   	push   %esi
408387:	ff 75 10             	push   0x10(%ebp)
40838a:	8b 75 fc             	mov    -0x4(%ebp),%esi
40838d:	8d 45 ec             	lea    -0x14(%ebp),%eax
408390:	50                   	push   %eax
408391:	53                   	push   %ebx
408392:	8b ce                	mov    %esi,%ecx
408394:	e8 46 ff ff ff       	call   0x4082df
408399:	83 7d f8 01          	cmpl   $0x1,-0x8(%ebp)
40839d:	8b d8                	mov    %eax,%ebx
40839f:	75 15                	jne    0x4083b6
4083a1:	57                   	push   %edi
4083a2:	8b ce                	mov    %esi,%ecx
4083a4:	e8 53 9a 01 00       	call   0x421dfc
4083a9:	57                   	push   %edi
4083aa:	ff 75 14             	push   0x14(%ebp)
4083ad:	50                   	push   %eax
4083ae:	e8 ad ba 03 00       	call   0x443e60
4083b3:	83 c4 0c             	add    $0xc,%esp
4083b6:	8b c3                	mov    %ebx,%eax
4083b8:	e9 ea 00 00 00       	jmp    0x4084a7
4083bd:	03 5d 14             	add    0x14(%ebp),%ebx
4083c0:	3b fb                	cmp    %ebx,%edi
4083c2:	77 25                	ja     0x4083e9
4083c4:	53                   	push   %ebx
4083c5:	e8 32 9a 01 00       	call   0x421dfc
4083ca:	8b 55 10             	mov    0x10(%ebp),%edx
4083cd:	8b f0                	mov    %eax,%esi
4083cf:	8b 4d 14             	mov    0x14(%ebp),%ecx
4083d2:	56                   	push   %esi
4083d3:	03 ca                	add    %edx,%ecx
4083d5:	51                   	push   %ecx
4083d6:	52                   	push   %edx
4083d7:	e8 43 07 00 00       	call   0x408b1f
4083dc:	8d 43 ff             	lea    -0x1(%ebx),%eax
4083df:	83 c4 0c             	add    $0xc,%esp
4083e2:	03 c6                	add    %esi,%eax
4083e4:	e9 be 00 00 00       	jmp    0x4084a7
4083e9:	57                   	push   %edi
4083ea:	e8 0d 9a 01 00       	call   0x421dfc
4083ef:	8b 4d f8             	mov    -0x8(%ebp),%ecx
4083f2:	8b f0                	mov    %eax,%esi
4083f4:	8d 04 3e             	lea    (%esi,%edi,1),%eax
4083f7:	89 45 fc             	mov    %eax,-0x4(%ebp)
4083fa:	83 f9 01             	cmp    $0x1,%ecx
4083fd:	75 28                	jne    0x408427
4083ff:	8b 55 10             	mov    0x10(%ebp),%edx
408402:	8b 4d 14             	mov    0x14(%ebp),%ecx
408405:	56                   	push   %esi
408406:	03 ca                	add    %edx,%ecx
408408:	51                   	push   %ecx
408409:	52                   	push   %edx
40840a:	e8 10 07 00 00       	call   0x408b1f
40840f:	8b 7d fc             	mov    -0x4(%ebp),%edi
408412:	03 f3                	add    %ebx,%esi
408414:	0f b6 45 0f          	movzbl 0xf(%ebp),%eax
408418:	2b fe                	sub    %esi,%edi
40841a:	57                   	push   %edi
40841b:	50                   	push   %eax
40841c:	56                   	push   %esi
40841d:	e8 3e ba 03 00       	call   0x443e60
408422:	83 c4 18             	add    $0x18,%esp
408425:	eb 7d                	jmp    0x4084a4
408427:	83 f9 03             	cmp    $0x3,%ecx
40842a:	75 2a                	jne    0x408456
40842c:	8a 45 0f             	mov    0xf(%ebp),%al
40842f:	66 98                	cbtw
408431:	0f b7 c0             	movzwl %ax,%eax
408434:	50                   	push   %eax
408435:	53                   	push   %ebx
408436:	57                   	push   %edi
408437:	56                   	push   %esi
408438:	e8 0c 8a 01 00       	call   0x420e49
40843d:	8b 4d 10             	mov    0x10(%ebp),%ecx
408440:	8b f0                	mov    %eax,%esi
408442:	8b 45 14             	mov    0x14(%ebp),%eax
408445:	56                   	push   %esi
408446:	03 c1                	add    %ecx,%eax
408448:	50                   	push   %eax
408449:	51                   	push   %ecx
40844a:	e8 d0 06 00 00       	call   0x408b1f
40844f:	83 c4 1c             	add    $0x1c,%esp
408452:	03 f3                	add    %ebx,%esi
408454:	eb 4e                	jmp    0x4084a4
408456:	83 f9 04             	cmp    $0x4,%ecx
408459:	75 1b                	jne    0x408476
40845b:	8b 45 14             	mov    0x14(%ebp),%eax
40845e:	85 c0                	test   %eax,%eax
408460:	74 29                	je     0x40848b
408462:	8b 4d 10             	mov    0x10(%ebp),%ecx
408465:	03 c1                	add    %ecx,%eax
408467:	56                   	push   %esi
408468:	50                   	push   %eax
408469:	51                   	push   %ecx
40846a:	e8 b0 06 00 00       	call   0x408b1f
40846f:	8b 5d 08             	mov    0x8(%ebp),%ebx
408472:	8b f0                	mov    %eax,%esi
408474:	eb 12                	jmp    0x408488
408476:	8b 4d 10             	mov    0x10(%ebp),%ecx
408479:	2b c3                	sub    %ebx,%eax
40847b:	50                   	push   %eax
40847c:	8b 45 14             	mov    0x14(%ebp),%eax
40847f:	03 c1                	add    %ecx,%eax
408481:	50                   	push   %eax
408482:	51                   	push   %ecx
408483:	e8 97 06 00 00       	call   0x408b1f
408488:	83 c4 0c             	add    $0xc,%esp
40848b:	8b 45 fc             	mov    -0x4(%ebp),%eax
40848e:	0f b6 4d 0f          	movzbl 0xf(%ebp),%ecx
408492:	2b c6                	sub    %esi,%eax
408494:	2b c3                	sub    %ebx,%eax
408496:	50                   	push   %eax
408497:	51                   	push   %ecx
408498:	56                   	push   %esi
408499:	e8 c2 b9 03 00       	call   0x443e60
40849e:	8b 75 fc             	mov    -0x4(%ebp),%esi
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