40e442:	56                   	push   %esi
40e443:	8b f1                	mov    %ecx,%esi
40e445:	57                   	push   %edi
40e446:	ff 76 2c             	push   0x2c(%esi)
40e449:	0f b6 46 31          	movzbl 0x31(%esi),%eax
40e44d:	50                   	push   %eax
40e44e:	ff 76 04             	push   0x4(%esi)
40e451:	ff 36                	push   (%esi)
40e453:	e8 5d dd ff ff       	call   0x40c1b5
40e458:	83 c4 10             	add    $0x10,%esp
40e45b:	8d 7e 40             	lea    0x40(%esi),%edi
40e45e:	84 c0                	test   %al,%al
40e460:	74 39                	je     0x40e49b
40e462:	83 46 14 04          	addl   $0x4,0x14(%esi)
40e466:	8b 46 14             	mov    0x14(%esi),%eax
40e469:	53                   	push   %ebx
40e46a:	8b 9f 04 04 00 00    	mov    0x404(%edi),%ebx
40e470:	0f b7 40 fc          	movzwl -0x4(%eax),%eax
40e474:	85 db                	test   %ebx,%ebx
40e476:	75 02                	jne    0x40e47a
40e478:	8b df                	mov    %edi,%ebx
40e47a:	50                   	push   %eax
40e47b:	8b cf                	mov    %edi,%ecx
40e47d:	e8 95 dc ff ff       	call   0x40c117
40e482:	50                   	push   %eax
40e483:	8d 46 38             	lea    0x38(%esi),%eax
40e486:	53                   	push   %ebx
40e487:	50                   	push   %eax
40e488:	e8 0e b7 00 00       	call   0x419b9b
40e48d:	83 c4 10             	add    $0x10,%esp
40e490:	5b                   	pop    %ebx
40e491:	85 c0                	test   %eax,%eax
40e493:	74 25                	je     0x40e4ba
40e495:	c6 46 30 01          	movb   $0x1,0x30(%esi)
40e499:	eb 1f                	jmp    0x40e4ba
40e49b:	8b 8f 04 04 00 00    	mov    0x404(%edi),%ecx
40e4a1:	85 c9                	test   %ecx,%ecx
40e4a3:	75 02                	jne    0x40e4a7
40e4a5:	8b cf                	mov    %edi,%ecx
40e4a7:	83 46 14 04          	addl   $0x4,0x14(%esi)
40e4ab:	8b 46 14             	mov    0x14(%esi),%eax
40e4ae:	8a 40 fc             	mov    -0x4(%eax),%al
40e4b1:	88 01                	mov    %al,(%ecx)
40e4b3:	c7 46 38 01 00 00 00 	movl   $0x1,0x38(%esi)
40e4ba:	8b 87 04 04 00 00    	mov    0x404(%edi),%eax
40e4c0:	85 c0                	test   %eax,%eax
40e4c2:	74 02                	je     0x40e4c6
40e4c4:	8b f8                	mov    %eax,%edi
40e4c6:	89 7e 34             	mov    %edi,0x34(%esi)
40e4c9:	b0 01                	mov    $0x1,%al
40e4cb:	5f                   	pop    %edi
40e4cc:	5e                   	pop    %esi
40e4cd:	c2 04 00             	ret    $0x4
40e4d0:	8b ff                	mov    %edi,%edi
40e4d2:	55                   	push   %ebp
40e4d3:	8b ec                	mov    %esp,%ebp
40e4d5:	51                   	push   %ecx
40e4d6:	53                   	push   %ebx
40e4d7:	56                   	push   %esi
40e4d8:	8b f1                	mov    %ecx,%esi
40e4da:	57                   	push   %edi
40e4db:	c6 46 3c 01          	movb   $0x1,0x3c(%esi)
40e4df:	83 46 14 04          	addl   $0x4,0x14(%esi)
40e4e3:	8b 46 14             	mov    0x14(%esi),%eax
40e4e6:	ff 76 2c             	push   0x2c(%esi)
40e4e9:	0f b7 58 fc          	movzwl -0x4(%eax),%ebx
40e4ed:	0f b7 46 32          	movzwl 0x32(%esi),%eax
40e4f1:	50                   	push   %eax
40e4f2:	ff 76 04             	push   0x4(%esi)
40e4f5:	ff 36                	push   (%esi)
40e4f7:	e8 f9 dc ff ff       	call   0x40c1f5
40e4fc:	83 c4 10             	add    $0x10,%esp
40e4ff:	8d 7e 40             	lea    0x40(%esi),%edi
40e502:	84 c0                	test   %al,%al
40e504:	75 32                	jne    0x40e538
40e506:	8b 8f 04 04 00 00    	mov    0x404(%edi),%ecx
40e50c:	88 5d fc             	mov    %bl,-0x4(%ebp)
40e50f:	88 45 fd             	mov    %al,-0x3(%ebp)
40e512:	85 c9                	test   %ecx,%ecx
40e514:	75 02                	jne    0x40e518
40e516:	8b cf                	mov    %edi,%ecx
40e518:	8b 46 08             	mov    0x8(%esi),%eax
40e51b:	50                   	push   %eax
40e51c:	8b 00                	mov    (%eax),%eax
40e51e:	ff 70 04             	push   0x4(%eax)
40e521:	8d 45 fc             	lea    -0x4(%ebp),%eax
40e524:	50                   	push   %eax
40e525:	51                   	push   %ecx
40e526:	e8 3b b4 00 00       	call   0x419966
40e52b:	83 c4 10             	add    $0x10,%esp
40e52e:	85 c0                	test   %eax,%eax
40e530:	79 15                	jns    0x40e547
40e532:	c6 46 30 01          	movb   $0x1,0x30(%esi)
40e536:	eb 0f                	jmp    0x40e547
40e538:	8b 87 04 04 00 00    	mov    0x404(%edi),%eax
40e53e:	85 c0                	test   %eax,%eax
40e540:	75 02                	jne    0x40e544
40e542:	8b c7                	mov    %edi,%eax
40e544:	66 89 18             	mov    %bx,(%eax)
40e547:	8b 87 04 04 00 00    	mov    0x404(%edi),%eax
40e54d:	85 c0                	test   %eax,%eax
40e54f:	74 02                	je     0x40e553
40e551:	8b f8                	mov    %eax,%edi
40e553:	89 7e 34             	mov    %edi,0x34(%esi)
40e556:	b0 01                	mov    $0x1,%al
40e558:	5f                   	pop    %edi
40e559:	c7 46 38 01 00 00 00 	movl   $0x1,0x38(%esi)
40e560:	5e                   	pop    %esi
40e561:	5b                   	pop    %ebx
40e562:	8b e5                	mov    %ebp,%esp
40e564:	5d                   	pop    %ebp
40e565:	c2 04 00             	ret    $0x4
40e568:	8b ff                	mov    %edi,%edi
40e56a:	55                   	push   %ebp
40e56b:	8b ec                	mov    %esp,%ebp
40e56d:	53                   	push   %ebx
40e56e:	56                   	push   %esi
40e56f:	8b f1                	mov    %ecx,%esi
40e571:	ff 76 2c             	push   0x2c(%esi)
40e574:	e8 8c f8 ff ff       	call   0x40de05
40e579:	59                   	pop    %ecx
40e57a:	8b d8                	mov    %eax,%ebx
40e57c:	8b cb                	mov    %ebx,%ecx
40e57e:	83 e9 01             	sub    $0x1,%ecx
40e581:	74 78                	je     0x40e5fb
40e583:	83 e9 01             	sub    $0x1,%ecx
40e586:	74 56                	je     0x40e5de
40e588:	49                   	dec    %ecx
40e589:	83 e9 01             	sub    $0x1,%ecx
40e58c:	74 33                	je     0x40e5c1
40e58e:	83 e9 04             	sub    $0x4,%ecx
40e591:	74 17                	je     0x40e5aa
40e593:	e8 d3 64 00 00       	call   0x414a6b
40e598:	c7 00 16 00 00 00    	movl   $0x16,(%eax)
40e59e:	e8 3f d7 ff ff       	call   0x40bce2
40e5a3:	32 c0                	xor    %al,%al
40e5a5:	e9 02 01 00 00       	jmp    0x40e6ac
40e5aa:	8b 46 20             	mov    0x20(%esi),%eax
40e5ad:	83 46 14 08          	addl   $0x8,0x14(%esi)
40e5b1:	c1 e8 04             	shr    $0x4,%eax
40e5b4:	a8 01                	test   $0x1,%al
40e5b6:	8b 46 14             	mov    0x14(%esi),%eax
40e5b9:	8b 48 f8             	mov    -0x8(%eax),%ecx
40e5bc:	8b 50 fc             	mov    -0x4(%eax),%edx
40e5bf:	eb 58                	jmp    0x40e619
40e5c1:	8b 46 20             	mov    0x20(%esi),%eax
40e5c4:	83 46 14 04          	addl   $0x4,0x14(%esi)
40e5c8:	c1 e8 04             	shr    $0x4,%eax
40e5cb:	a8 01                	test   $0x1,%al
40e5cd:	8b 46 14             	mov    0x14(%esi),%eax
40e5d0:	74 05                	je     0x40e5d7
40e5d2:	8b 40 fc             	mov    -0x4(%eax),%eax
40e5d5:	eb 3f                	jmp    0x40e616
40e5d7:	8b 48 fc             	mov    -0x4(%eax),%ecx
40e5da:	33 d2                	xor    %edx,%edx
40e5dc:	eb 3b                	jmp    0x40e619
40e5de:	8b 46 20             	mov    0x20(%esi),%eax
40e5e1:	83 46 14 04          	addl   $0x4,0x14(%esi)
40e5e5:	c1 e8 04             	shr    $0x4,%eax
40e5e8:	a8 01                	test   $0x1,%al
40e5ea:	8b 46 14             	mov    0x14(%esi),%eax
40e5ed:	74 06                	je     0x40e5f5
40e5ef:	0f bf 40 fc          	movswl -0x4(%eax),%eax
40e5f3:	eb 21                	jmp    0x40e616
40e5f5:	0f b7 40 fc          	movzwl -0x4(%eax),%eax
40e5f9:	eb 1b                	jmp    0x40e616
40e5fb:	8b 46 20             	mov    0x20(%esi),%eax
40e5fe:	83 46 14 04          	addl   $0x4,0x14(%esi)
40e602:	c1 e8 04             	shr    $0x4,%eax
40e605:	a8 01                	test   $0x1,%al
40e607:	8b 46 14             	mov    0x14(%esi),%eax
40e60a:	74 06                	je     0x40e612
40e60c:	0f be 40 fc          	movsbl -0x4(%eax),%eax
40e610:	eb 04                	jmp    0x40e616
40e612:	0f b6 40 fc          	movzbl -0x4(%eax),%eax
40e616:	99                   	cltd
40e617:	8b c8                	mov    %eax,%ecx
40e619:	57                   	push   %edi
40e61a:	8b 7e 20             	mov    0x20(%esi),%edi
40e61d:	8b c7                	mov    %edi,%eax
40e61f:	c1 e8 04             	shr    $0x4,%eax
40e622:	a8 01                	test   $0x1,%al
40e624:	74 17                	je     0x40e63d
40e626:	85 d2                	test   %edx,%edx
40e628:	7f 13                	jg     0x40e63d
40e62a:	7c 04                	jl     0x40e630
40e62c:	85 c9                	test   %ecx,%ecx
40e62e:	73 0d                	jae    0x40e63d
40e630:	f7 d9                	neg    %ecx
40e632:	83 d2 00             	adc    $0x0,%edx
40e635:	f7 da                	neg    %edx
40e637:	83 cf 40             	or     $0x40,%edi
40e63a:	89 7e 20             	mov    %edi,0x20(%esi)
40e63d:	83 7e 28 00          	cmpl   $0x0,0x28(%esi)
40e641:	5f                   	pop    %edi
40e642:	7d 09                	jge    0x40e64d
40e644:	c7 46 28 01 00 00 00 	movl   $0x1,0x28(%esi)
40e64b:	eb 11                	jmp    0x40e65e
40e64d:	83 66 20 f7          	andl   $0xfffffff7,0x20(%esi)
40e651:	b8 00 02 00 00       	mov    $0x200,%eax
40e656:	39 46 28             	cmp    %eax,0x28(%esi)
40e659:	7e 03                	jle    0x40e65e
40e65b:	89 46 28             	mov    %eax,0x28(%esi)
40e65e:	8b c1                	mov    %ecx,%eax
40e660:	0b c2                	or     %edx,%eax
40e662:	75 04                	jne    0x40e668
40e664:	83 66 20 df          	andl   $0xffffffdf,0x20(%esi)
40e668:	ff 75 0c             	push   0xc(%ebp)
40e66b:	ff 75 08             	push   0x8(%ebp)
40e66e:	83 fb 08             	cmp    $0x8,%ebx
40e671:	75 0b                	jne    0x40e67e
40e673:	52                   	push   %edx
40e674:	51                   	push   %ecx
40e675:	8b ce                	mov    %esi,%ecx
40e677:	e8 45 dd ff ff       	call   0x40c3c1
40e67c:	eb 08                	jmp    0x40e686
40e67e:	51                   	push   %ecx
40e67f:	8b ce                	mov    %esi,%ecx
40e681:	e8 dc db ff ff       	call   0x40c262
40e686:	8b 46 20             	mov    0x20(%esi),%eax
40e689:	c1 e8 07             	shr    $0x7,%eax
40e68c:	a8 01                	test   $0x1,%al
40e68e:	74 1a                	je     0x40e6aa
40e690:	83 7e 38 00          	cmpl   $0x0,0x38(%esi)
40e694:	74 08                	je     0x40e69e
40e696:	8b 46 34             	mov    0x34(%esi),%eax
40e699:	80 38 30             	cmpb   $0x30,(%eax)
40e69c:	74 0c                	je     0x40e6aa
40e69e:	ff 4e 34             	decl   0x34(%esi)
40e6a1:	8b 4e 34             	mov    0x34(%esi),%ecx
40e6a4:	c6 01 30             	movb   $0x30,(%ecx)
40e6a7:	ff 46 38             	incl   0x38(%esi)
40e6aa:	b0 01                	mov    $0x1,%al
40e6ac:	5e                   	pop    %esi
40e6ad:	5b                   	pop    %ebx
40e6ae:	5d                   	pop    %ebp
40e6af:	c2 08 00             	ret    $0x8
40e6b2:	8b ff                	mov    %edi,%edi
40e6b4:	55                   	push   %ebp
40e6b5:	8b ec                	mov    %esp,%ebp
40e6b7:	53                   	push   %ebx
40e6b8:	56                   	push   %esi
40e6b9:	8b f1                	mov    %ecx,%esi
40e6bb:	ff 76 2c             	push   0x2c(%esi)
40e6be:	e8 42 f7 ff ff       	call   0x40de05
40e6c3:	59                   	pop    %ecx
40e6c4:	8b d8                	mov    %eax,%ebx
40e6c6:	8b cb                	mov    %ebx,%ecx
40e6c8:	83 e9 01             	sub    $0x1,%ecx
40e6cb:	74 78                	je     0x40e745
40e6cd:	83 e9 01             	sub    $0x1,%ecx
40e6d0:	74 56                	je     0x40e728
40e6d2:	49                   	dec    %ecx
40e6d3:	83 e9 01             	sub    $0x1,%ecx
40e6d6:	74 33                	je     0x40e70b
40e6d8:	83 e9 04             	sub    $0x4,%ecx
40e6db:	74 17                	je     0x40e6f4
40e6dd:	e8 89 63 00 00       	call   0x414a6b
40e6e2:	c7 00 16 00 00 00    	movl   $0x16,(%eax)
40e6e8:	e8 f5 d5 ff ff       	call   0x40bce2
40e6ed:	32 c0                	xor    %al,%al
40e6ef:	e9 02 01 00 00       	jmp    0x40e7f6
40e6f4:	8b 46 20             	mov    0x20(%esi),%eax
40e6f7:	83 46 14 08          	addl   $0x8,0x14(%esi)
40e6fb:	c1 e8 04             	shr    $0x4,%eax
40e6fe:	a8 01                	test   $0x1,%al
40e700:	8b 46 14             	mov    0x14(%esi),%eax
40e703:	8b 48 f8             	mov    -0x8(%eax),%ecx
40e706:	8b 50 fc             	mov    -0x4(%eax),%edx
40e709:	eb 58                	jmp    0x40e763
40e70b:	8b 46 20             	mov    0x20(%esi),%eax
40e70e:	83 46 14 04          	addl   $0x4,0x14(%esi)
40e712:	c1 e8 04             	shr    $0x4,%eax
40e715:	a8 01                	test   $0x1,%al
40e717:	8b 46 14             	mov    0x14(%esi),%eax
40e71a:	74 05                	je     0x40e721
40e71c:	8b 40 fc             	mov    -0x4(%eax),%eax
40e71f:	eb 3f                	jmp    0x40e760
40e721:	8b 48 fc             	mov    -0x4(%eax),%ecx
40e724:	33 d2                	xor    %edx,%edx
40e726:	eb 3b                	jmp    0x40e763
40e728:	8b 46 20             	mov    0x20(%esi),%eax
40e72b:	83 46 14 04          	addl   $0x4,0x14(%esi)
40e72f:	c1 e8 04             	shr    $0x4,%eax
40e732:	a8 01                	test   $0x1,%al
40e734:	8b 46 14             	mov    0x14(%esi),%eax
40e737:	74 06                	je     0x40e73f
40e739:	0f bf 40 fc          	movswl -0x4(%eax),%eax
40e73d:	eb 21                	jmp    0x40e760
40e73f:	0f b7 40 fc          	movzwl -0x4(%eax),%eax
40e743:	eb 1b                	jmp    0x40e760
40e745:	8b 46 20             	mov    0x20(%esi),%eax
40e748:	83 46 14 04          	addl   $0x4,0x14(%esi)
40e74c:	c1 e8 04             	shr    $0x4,%eax
40e74f:	a8 01                	test   $0x1,%al
40e751:	8b 46 14             	mov    0x14(%esi),%eax
40e754:	74 06                	je     0x40e75c
40e756:	0f be 40 fc          	movsbl -0x4(%eax),%eax
40e75a:	eb 04                	jmp    0x40e760
40e75c:	0f b6 40 fc          	movzbl -0x4(%eax),%eax
40e760:	99                   	cltd
40e761:	8b c8                	mov    %eax,%ecx
40e763:	57                   	push   %edi
40e764:	8b 7e 20             	mov    0x20(%esi),%edi
40e767:	8b c7                	mov    %edi,%eax
40e769:	c1 e8 04             	shr    $0x4,%eax
40e76c:	a8 01                	test   $0x1,%al
40e76e:	74 17                	je     0x40e787
40e770:	85 d2                	test   %edx,%edx
40e772:	7f 13                	jg     0x40e787
40e774:	7c 04                	jl     0x40e77a
40e776:	85 c9                	test   %ecx,%ecx
40e778:	73 0d                	jae    0x40e787
40e77a:	f7 d9                	neg    %ecx
40e77c:	83 d2 00             	adc    $0x0,%edx
40e77f:	f7 da                	neg    %edx
40e781:	83 cf 40             	or     $0x40,%edi
40e784:	89 7e 20             	mov    %edi,0x20(%esi)
40e787:	83 7e 28 00          	cmpl   $0x0,0x28(%esi)
40e78b:	5f                   	pop    %edi
40e78c:	7d 09                	jge    0x40e797
40e78e:	c7 46 28 01 00 00 00 	movl   $0x1,0x28(%esi)
40e795:	eb 11                	jmp    0x40e7a8
40e797:	83 66 20 f7          	andl   $0xfffffff7,0x20(%esi)
40e79b:	b8 00 02 00 00       	mov    $0x200,%eax
40e7a0:	39 46 28             	cmp    %eax,0x28(%esi)
40e7a3:	7e 03                	jle    0x40e7a8
40e7a5:	89 46 28             	mov    %eax,0x28(%esi)
40e7a8:	8b c1                	mov    %ecx,%eax
40e7aa:	0b c2                	or     %edx,%eax
40e7ac:	75 04                	jne    0x40e7b2
40e7ae:	83 66 20 df          	andl   $0xffffffdf,0x20(%esi)
40e7b2:	ff 75 0c             	push   0xc(%ebp)
40e7b5:	ff 75 08             	push   0x8(%ebp)
40e7b8:	83 fb 08             	cmp    $0x8,%ebx
40e7bb:	75 0b                	jne    0x40e7c8
40e7bd:	52                   	push   %edx
40e7be:	51                   	push   %ecx
40e7bf:	8b ce                	mov    %esi,%ecx
40e7c1:	e8 83 dc ff ff       	call   0x40c449
40e7c6:	eb 08                	jmp    0x40e7d0
40e7c8:	51                   	push   %ecx
40e7c9:	8b ce                	mov    %esi,%ecx
40e7cb:	e8 07 db ff ff       	call   0x40c2d7
40e7d0:	8b 46 20             	mov    0x20(%esi),%eax
40e7d3:	c1 e8 07             	shr    $0x7,%eax
40e7d6:	a8 01                	test   $0x1,%al
40e7d8:	74 1a                	je     0x40e7f4
40e7da:	83 7e 38 00          	cmpl   $0x0,0x38(%esi)
40e7de:	74 08                	je     0x40e7e8