40f5e0:	8b ec                	mov    %esp,%ebp
40f5e2:	8a 4d 08             	mov    0x8(%ebp),%cl
40f5e5:	8d 41 e0             	lea    -0x20(%ecx),%eax
40f5e8:	3c 5a                	cmp    $0x5a,%al
40f5ea:	77 12                	ja     0x40f5fe
40f5ec:	0f be c1             	movsbl %cl,%eax
40f5ef:	83 e8 20             	sub    $0x20,%eax
40f5f2:	83 e0 7f             	and    $0x7f,%eax
40f5f5:	8a 04 45 01 23 43 00 	mov    0x432301(,%eax,2),%al
40f5fc:	eb 02                	jmp    0x40f600
40f5fe:	32 c0                	xor    %al,%al
40f600:	0f b6 c8             	movzbl %al,%ecx
40f603:	0f b6 45 0c          	movzbl 0xc(%ebp),%eax
40f607:	8d 04 c8             	lea    (%eax,%ecx,8),%eax
40f60a:	83 e0 7f             	and    $0x7f,%eax
40f60d:	8a 04 45 00 23 43 00 	mov    0x432300(,%eax,2),%al
40f614:	5d                   	pop    %ebp
40f615:	c2 08 00             	ret    $0x8
40f618:	8b ff                	mov    %edi,%edi
40f61a:	55                   	push   %ebp
40f61b:	8b ec                	mov    %esp,%ebp
40f61d:	8b 4d 08             	mov    0x8(%ebp),%ecx
40f620:	8d 41 e0             	lea    -0x20(%ecx),%eax
40f623:	66 83 f8 5a          	cmp    $0x5a,%ax
40f627:	77 0f                	ja     0x40f638
40f629:	8d 41 e0             	lea    -0x20(%ecx),%eax
40f62c:	83 e0 7f             	and    $0x7f,%eax
40f62f:	8a 04 45 01 24 43 00 	mov    0x432401(,%eax,2),%al
40f636:	eb 02                	jmp    0x40f63a
40f638:	32 c0                	xor    %al,%al
40f63a:	0f b6 4d 0c          	movzbl 0xc(%ebp),%ecx
40f63e:	0f b6 c0             	movzbl %al,%eax
40f641:	6b c0 09             	imul   $0x9,%eax,%eax
40f644:	03 c1                	add    %ecx,%eax
40f646:	83 e0 7f             	and    $0x7f,%eax
40f649:	8a 04 45 00 24 43 00 	mov    0x432400(,%eax,2),%al
40f650:	5d                   	pop    %ebp
40f651:	c2 08 00             	ret    $0x8
40f654:	8b ff                	mov    %edi,%edi
40f656:	55                   	push   %ebp
40f657:	8b ec                	mov    %esp,%ebp
40f659:	8b 4d 08             	mov    0x8(%ebp),%ecx
40f65c:	8d 41 e0             	lea    -0x20(%ecx),%eax
40f65f:	66 83 f8 5a          	cmp    $0x5a,%ax
40f663:	77 0f                	ja     0x40f674
40f665:	8d 41 e0             	lea    -0x20(%ecx),%eax
40f668:	83 e0 7f             	and    $0x7f,%eax
40f66b:	8a 04 45 01 23 43 00 	mov    0x432301(,%eax,2),%al
40f672:	eb 02                	jmp    0x40f676
40f674:	32 c0                	xor    %al,%al
40f676:	0f b6 c8             	movzbl %al,%ecx
40f679:	0f b6 45 0c          	movzbl 0xc(%ebp),%eax
40f67d:	8d 04 c8             	lea    (%eax,%ecx,8),%eax
40f680:	83 e0 7f             	and    $0x7f,%eax
40f683:	8a 04 45 00 23 43 00 	mov    0x432300(,%eax,2),%al
40f68a:	5d                   	pop    %ebp
40f68b:	c2 08 00             	ret    $0x8
40f68e:	8b ff                	mov    %edi,%edi
40f690:	55                   	push   %ebp
40f691:	8b ec                	mov    %esp,%ebp
40f693:	8b 45 0c             	mov    0xc(%ebp),%eax
40f696:	8b 55 08             	mov    0x8(%ebp),%edx
40f699:	53                   	push   %ebx
40f69a:	57                   	push   %edi
40f69b:	8b 08                	mov    (%eax),%ecx
40f69d:	8a 1a                	mov    (%edx),%bl
40f69f:	0f b6 c3             	movzbl %bl,%eax
40f6a2:	8b b9 94 00 00 00    	mov    0x94(%ecx),%edi
40f6a8:	80 3c 38 65          	cmpb   $0x65,(%eax,%edi,1)
40f6ac:	74 10                	je     0x40f6be
40f6ae:	56                   	push   %esi
40f6af:	8b 31                	mov    (%ecx),%esi
40f6b1:	42                   	inc    %edx
40f6b2:	8a 1a                	mov    (%edx),%bl
40f6b4:	0f b6 c3             	movzbl %bl,%eax
40f6b7:	f6 04 46 04          	testb  $0x4,(%esi,%eax,2)
40f6bb:	75 f4                	jne    0x40f6b1
40f6bd:	5e                   	pop    %esi
40f6be:	0f b6 c3             	movzbl %bl,%eax
40f6c1:	80 3c 38 78          	cmpb   $0x78,(%eax,%edi,1)
40f6c5:	75 05                	jne    0x40f6cc
40f6c7:	83 c2 02             	add    $0x2,%edx
40f6ca:	8a 1a                	mov    (%edx),%bl
40f6cc:	8b 81 88 00 00 00    	mov    0x88(%ecx),%eax
40f6d2:	8b 00                	mov    (%eax),%eax
40f6d4:	8a 00                	mov    (%eax),%al
40f6d6:	88 02                	mov    %al,(%edx)
40f6d8:	42                   	inc    %edx
40f6d9:	8a 02                	mov    (%edx),%al
40f6db:	8a cb                	mov    %bl,%cl
40f6dd:	88 1a                	mov    %bl,(%edx)
40f6df:	42                   	inc    %edx
40f6e0:	8a d8                	mov    %al,%bl
40f6e2:	84 c9                	test   %cl,%cl
40f6e4:	75 f3                	jne    0x40f6d9
40f6e6:	5f                   	pop    %edi
40f6e7:	5b                   	pop    %ebx
40f6e8:	5d                   	pop    %ebp
40f6e9:	c3                   	ret
40f6ea:	8b ff                	mov    %edi,%edi
40f6ec:	55                   	push   %ebp
40f6ed:	8b ec                	mov    %esp,%ebp
40f6ef:	83 ec 10             	sub    $0x10,%esp
40f6f2:	53                   	push   %ebx
40f6f3:	56                   	push   %esi
40f6f4:	8b f1                	mov    %ecx,%esi
40f6f6:	8d 55 fc             	lea    -0x4(%ebp),%edx
40f6f9:	57                   	push   %edi
40f6fa:	33 db                	xor    %ebx,%ebx
40f6fc:	43                   	inc    %ebx
40f6fd:	8b 7e 08             	mov    0x8(%esi),%edi
40f700:	8b 4e 0c             	mov    0xc(%esi),%ecx
40f703:	53                   	push   %ebx
40f704:	49                   	dec    %ecx
40f705:	8b 47 18             	mov    0x18(%edi),%eax
40f708:	6a 0a                	push   $0xa
40f70a:	51                   	push   %ecx
40f70b:	89 45 f8             	mov    %eax,-0x8(%ebp)
40f70e:	8b 47 1c             	mov    0x1c(%edi),%eax
40f711:	51                   	push   %ecx
40f712:	89 45 f4             	mov    %eax,-0xc(%ebp)
40f715:	8b c4                	mov    %esp,%eax
40f717:	57                   	push   %edi
40f718:	89 08                	mov    %ecx,(%eax)
40f71a:	89 50 04             	mov    %edx,0x4(%eax)
40f71d:	89 4d fc             	mov    %ecx,-0x4(%ebp)
40f720:	e8 cb e4 ff ff       	call   0x40dbf0
40f725:	8b c8                	mov    %eax,%ecx
40f727:	83 c4 14             	add    $0x14,%esp
40f72a:	8b 45 08             	mov    0x8(%ebp),%eax
40f72d:	89 08                	mov    %ecx,(%eax)
40f72f:	8b 46 08             	mov    0x8(%esi),%eax
40f732:	80 78 1c 00          	cmpb   $0x0,0x1c(%eax)
40f736:	74 06                	je     0x40f73e
40f738:	83 78 18 22          	cmpl   $0x22,0x18(%eax)
40f73c:	74 08                	je     0x40f746
40f73e:	8b 45 fc             	mov    -0x4(%ebp),%eax
40f741:	3b 46 0c             	cmp    0xc(%esi),%eax
40f744:	73 04                	jae    0x40f74a
40f746:	32 db                	xor    %bl,%bl
40f748:	eb 03                	jmp    0x40f74d
40f74a:	89 46 0c             	mov    %eax,0xc(%esi)
40f74d:	8b 45 f8             	mov    -0x8(%ebp),%eax
40f750:	89 47 18             	mov    %eax,0x18(%edi)
40f753:	8b 45 f4             	mov    -0xc(%ebp),%eax
40f756:	89 47 1c             	mov    %eax,0x1c(%edi)
40f759:	8a c3                	mov    %bl,%al
40f75b:	5f                   	pop    %edi
40f75c:	5e                   	pop    %esi
40f75d:	5b                   	pop    %ebx
40f75e:	c9                   	leave
40f75f:	c2 04 00             	ret    $0x4
40f762:	8b ff                	mov    %edi,%edi
40f764:	55                   	push   %ebp
40f765:	8b ec                	mov    %esp,%ebp
40f767:	83 ec 10             	sub    $0x10,%esp
40f76a:	53                   	push   %ebx
40f76b:	56                   	push   %esi
40f76c:	8b f1                	mov    %ecx,%esi
40f76e:	8d 55 fc             	lea    -0x4(%ebp),%edx
40f771:	57                   	push   %edi
40f772:	33 db                	xor    %ebx,%ebx
40f774:	43                   	inc    %ebx
40f775:	8b 7e 08             	mov    0x8(%esi),%edi
40f778:	8b 4e 0c             	mov    0xc(%esi),%ecx
40f77b:	53                   	push   %ebx
40f77c:	83 e9 02             	sub    $0x2,%ecx
40f77f:	8b 47 18             	mov    0x18(%edi),%eax
40f782:	6a 0a                	push   $0xa
40f784:	51                   	push   %ecx
40f785:	89 45 f8             	mov    %eax,-0x8(%ebp)
40f788:	8b 47 1c             	mov    0x1c(%edi),%eax
40f78b:	51                   	push   %ecx
40f78c:	89 45 f4             	mov    %eax,-0xc(%ebp)
40f78f:	8b c4                	mov    %esp,%eax
40f791:	57                   	push   %edi
40f792:	89 08                	mov    %ecx,(%eax)
40f794:	89 50 04             	mov    %edx,0x4(%eax)
40f797:	89 4d fc             	mov    %ecx,-0x4(%ebp)
40f79a:	e8 60 e6 ff ff       	call   0x40ddff
40f79f:	8b c8                	mov    %eax,%ecx
40f7a1:	83 c4 14             	add    $0x14,%esp
40f7a4:	8b 45 08             	mov    0x8(%ebp),%eax
40f7a7:	89 08                	mov    %ecx,(%eax)
40f7a9:	8b 46 08             	mov    0x8(%esi),%eax
40f7ac:	80 78 1c 00          	cmpb   $0x0,0x1c(%eax)
40f7b0:	74 06                	je     0x40f7b8
40f7b2:	83 78 18 22          	cmpl   $0x22,0x18(%eax)
40f7b6:	74 08                	je     0x40f7c0
40f7b8:	8b 45 fc             	mov    -0x4(%ebp),%eax
40f7bb:	3b 46 0c             	cmp    0xc(%esi),%eax
40f7be:	73 04                	jae    0x40f7c4
40f7c0:	32 db                	xor    %bl,%bl
40f7c2:	eb 03                	jmp    0x40f7c7
40f7c4:	89 46 0c             	mov    %eax,0xc(%esi)
40f7c7:	8b 45 f8             	mov    -0x8(%ebp),%eax
40f7ca:	89 47 18             	mov    %eax,0x18(%edi)
40f7cd:	8b 45 f4             	mov    -0xc(%ebp),%eax
40f7d0:	89 47 1c             	mov    %eax,0x1c(%edi)
40f7d3:	8a c3                	mov    %bl,%al
40f7d5:	5f                   	pop    %edi
40f7d6:	5e                   	pop    %esi
40f7d7:	5b                   	pop    %ebx
40f7d8:	c9                   	leave
40f7d9:	c2 04 00             	ret    $0x4
40f7dc:	8b ff                	mov    %edi,%edi
40f7de:	55                   	push   %ebp
40f7df:	8b ec                	mov    %esp,%ebp
40f7e1:	83 ec 14             	sub    $0x14,%esp
40f7e4:	53                   	push   %ebx
40f7e5:	56                   	push   %esi
40f7e6:	8b f1                	mov    %ecx,%esi
40f7e8:	57                   	push   %edi
40f7e9:	ff 76 08             	push   0x8(%esi)
40f7ec:	8d 8e 48 04 00 00    	lea    0x448(%esi),%ecx
40f7f2:	e8 3f 21 00 00       	call   0x411936
40f7f7:	84 c0                	test   %al,%al
40f7f9:	74 27                	je     0x40f822
40f7fb:	8b 4e 0c             	mov    0xc(%esi),%ecx
40f7fe:	85 c9                	test   %ecx,%ecx
40f800:	75 28                	jne    0x40f82a
40f802:	8b 46 08             	mov    0x8(%esi),%eax
40f805:	33 db                	xor    %ebx,%ebx
40f807:	c6 40 1c 01          	movb   $0x1,0x1c(%eax)
40f80b:	c7 40 18 16 00 00 00 	movl   $0x16,0x18(%eax)
40f812:	ff 76 08             	push   0x8(%esi)
40f815:	53                   	push   %ebx
40f816:	53                   	push   %ebx
40f817:	53                   	push   %ebx
40f818:	53                   	push   %ebx
40f819:	53                   	push   %ebx
40f81a:	e8 52 db ff ff       	call   0x40d371
40f81f:	83 c4 18             	add    $0x18,%esp
40f822:	83 c8 ff             	or     $0xffffffff,%eax
40f825:	5f                   	pop    %edi
40f826:	5e                   	pop    %esi
40f827:	5b                   	pop    %ebx
40f828:	c9                   	leave
40f829:	c3                   	ret
40f82a:	8b 86 50 04 00 00    	mov    0x450(%esi),%eax
40f830:	40                   	inc    %eax
40f831:	89 86 50 04 00 00    	mov    %eax,0x450(%esi)
40f837:	83 f8 02             	cmp    $0x2,%eax
40f83a:	0f 84 d6 01 00 00    	je     0x40fa16
40f840:	33 db                	xor    %ebx,%ebx
40f842:	89 5e 34             	mov    %ebx,0x34(%esi)
40f845:	88 5e 18             	mov    %bl,0x18(%esi)
40f848:	8a 11                	mov    (%ecx),%dl
40f84a:	41                   	inc    %ecx
40f84b:	88 55 ff             	mov    %dl,-0x1(%ebp)
40f84e:	89 4e 0c             	mov    %ecx,0xc(%esi)
40f851:	88 56 2d             	mov    %dl,0x2d(%esi)
40f854:	84 d2                	test   %dl,%dl
40f856:	0f 84 a7 01 00 00    	je     0x40fa03
40f85c:	88 55 f0             	mov    %dl,-0x10(%ebp)
40f85f:	8d 46 14             	lea    0x14(%esi),%eax
40f862:	39 18                	cmp    %ebx,(%eax)
40f864:	0f 8c 99 01 00 00    	jl     0x40fa03
40f86a:	0f b6 46 18          	movzbl 0x18(%esi),%eax
40f86e:	8b ce                	mov    %esi,%ecx
40f870:	50                   	push   %eax
40f871:	ff 75 f0             	push   -0x10(%ebp)
40f874:	e8 64 fd ff ff       	call   0x40f5dd
40f879:	88 46 18             	mov    %al,0x18(%esi)
40f87c:	3c 08                	cmp    $0x8,%al
40f87e:	0f 83 d3 01 00 00    	jae    0x40fa57
40f884:	0f b6 c0             	movzbl %al,%eax
40f887:	83 f8 07             	cmp    $0x7,%eax
40f88a:	77 96                	ja     0x40f822
40f88c:	ff 24 85 6c fa 40 00 	jmp    *0x40fa6c(,%eax,4)
40f893:	8b 7e 08             	mov    0x8(%esi),%edi
40f896:	88 5e 38             	mov    %bl,0x38(%esi)
40f899:	89 7d f8             	mov    %edi,-0x8(%ebp)
40f89c:	38 5f 14             	cmp    %bl,0x14(%edi)
40f89f:	75 0d                	jne    0x40f8ae
40f8a1:	8b cf                	mov    %edi,%ecx
40f8a3:	e8 18 20 00 00       	call   0x4118c0
40f8a8:	8b 46 08             	mov    0x8(%esi),%eax
40f8ab:	89 45 f8             	mov    %eax,-0x8(%ebp)
40f8ae:	8a 46 2d             	mov    0x2d(%esi),%al
40f8b1:	89 45 ec             	mov    %eax,-0x14(%ebp)
40f8b4:	88 45 f4             	mov    %al,-0xc(%ebp)
40f8b7:	0f be c0             	movsbl %al,%eax
40f8ba:	68 00 80 00 00       	push   $0x8000
40f8bf:	50                   	push   %eax
40f8c0:	8b 47 0c             	mov    0xc(%edi),%eax
40f8c3:	ff 30                	push   (%eax)
40f8c5:	e8 3b 23 00 00       	call   0x411c05
40f8ca:	83 c4 0c             	add    $0xc,%esp
40f8cd:	8d 7e 14             	lea    0x14(%esi),%edi
40f8d0:	85 c0                	test   %eax,%eax
40f8d2:	74 29                	je     0x40f8fd
40f8d4:	ff 75 f8             	push   -0x8(%ebp)
40f8d7:	8d 8e 48 04 00 00    	lea    0x448(%esi),%ecx
40f8dd:	57                   	push   %edi
40f8de:	ff 75 ec             	push   -0x14(%ebp)
40f8e1:	e8 40 21 00 00       	call   0x411a26
40f8e6:	8b 46 0c             	mov    0xc(%esi),%eax
40f8e9:	8a 08                	mov    (%eax),%cl
40f8eb:	40                   	inc    %eax
40f8ec:	89 46 0c             	mov    %eax,0xc(%esi)
40f8ef:	88 4e 2d             	mov    %cl,0x2d(%esi)
40f8f2:	84 c9                	test   %cl,%cl
40f8f4:	0f 84 24 01 00 00    	je     0x40fa1e
40f8fa:	88 4d f4             	mov    %cl,-0xc(%ebp)
40f8fd:	ff 76 08             	push   0x8(%esi)
40f900:	8d 8e 48 04 00 00    	lea    0x448(%esi),%ecx
40f906:	57                   	push   %edi
40f907:	ff 75 f4             	push   -0xc(%ebp)
40f90a:	e8 17 21 00 00       	call   0x411a26
40f90f:	e9 d0 00 00 00       	jmp    0x40f9e4
40f914:	83 4e 24 ff          	orl    $0xffffffff,0x24(%esi)
40f918:	89 5e 20             	mov    %ebx,0x20(%esi)
40f91b:	88 5e 2c             	mov    %bl,0x2c(%esi)
40f91e:	89 5e 1c             	mov    %ebx,0x1c(%esi)
40f921:	89 5e 28             	mov    %ebx,0x28(%esi)
40f924:	88 5e 38             	mov    %bl,0x38(%esi)
40f927:	e9 b8 00 00 00       	jmp    0x40f9e4
40f92c:	0f be 45 ff          	movsbl -0x1(%ebp),%eax
40f930:	83 e8 20             	sub    $0x20,%eax
40f933:	74 37                	je     0x40f96c
40f935:	83 e8 03             	sub    $0x3,%eax
40f938:	74 2c                	je     0x40f966
40f93a:	83 e8 08             	sub    $0x8,%eax
40f93d:	74 21                	je     0x40f960
40f93f:	48                   	dec    %eax
40f940:	83 e8 01             	sub    $0x1,%eax
40f943:	74 12                	je     0x40f957
40f945:	83 e8 03             	sub    $0x3,%eax
40f948:	0f 85 96 00 00 00    	jne    0x40f9e4
40f94e:	83 4e 1c 08          	orl    $0x8,0x1c(%esi)
40f952:	e9 8d 00 00 00       	jmp    0x40f9e4
40f957:	83 4e 1c 04          	orl    $0x4,0x1c(%esi)
40f95b:	e9 84 00 00 00       	jmp    0x40f9e4
40f960:	83 4e 1c 01          	orl    $0x1,0x1c(%esi)
40f964:	eb 7e                	jmp    0x40f9e4
40f966:	83 4e 1c 20          	orl    $0x20,0x1c(%esi)
40f96a:	eb 78                	jmp    0x40f9e4
40f96c:	83 4e 1c 02          	orl    $0x2,0x1c(%esi)
40f970:	eb 72                	jmp    0x40f9e4
40f972:	80 7d ff 2a          	cmpb   $0x2a,-0x1(%ebp)
40f976:	74 0d                	je     0x40f985
40f978:	8d 46 20             	lea    0x20(%esi),%eax
40f97b:	50                   	push   %eax
40f97c:	8b ce                	mov    %esi,%ecx
40f97e:	e8 67 fd ff ff       	call   0x40f6ea
40f983:	eb 57                	jmp    0x40f9dc
40f985:	8b 4e 10             	mov    0x10(%esi),%ecx
40f988:	8d 41 04             	lea    0x4(%ecx),%eax
40f98b:	89 46 10             	mov    %eax,0x10(%esi)