4054e8:	03 f8                	add    %eax,%edi
4054ea:	89 7e 34             	mov    %edi,0x34(%esi)
4054ed:	8b 4e 28             	mov    0x28(%esi),%ecx
4054f0:	85 c9                	test   %ecx,%ecx
4054f2:	7f 04                	jg     0x4054f8
4054f4:	85 db                	test   %ebx,%ebx
4054f6:	74 30                	je     0x405528
4054f8:	33 d2                	xor    %edx,%edx
4054fa:	8b c3                	mov    %ebx,%eax
4054fc:	f7 75 0c             	divl   0xc(%ebp)
4054ff:	49                   	dec    %ecx
405500:	80 c2 30             	add    $0x30,%dl
405503:	89 4e 28             	mov    %ecx,0x28(%esi)
405506:	8b d8                	mov    %eax,%ebx
405508:	80 fa 39             	cmp    $0x39,%dl
40550b:	7e 11                	jle    0x40551e
40550d:	80 7d 10 00          	cmpb   $0x0,0x10(%ebp)
405511:	0f 94 c0             	sete   %al
405514:	fe c8                	dec    %al
405516:	24 e0                	and    $0xe0,%al
405518:	04 61                	add    $0x61,%al
40551a:	2c 3a                	sub    $0x3a,%al
40551c:	02 d0                	add    %al,%dl
40551e:	8b 46 34             	mov    0x34(%esi),%eax
405521:	88 10                	mov    %dl,(%eax)
405523:	ff 4e 34             	decl   0x34(%esi)
405526:	eb c5                	jmp    0x4054ed
405528:	8b 46 34             	mov    0x34(%esi),%eax
40552b:	2b f8                	sub    %eax,%edi
40552d:	89 7e 38             	mov    %edi,0x38(%esi)
405530:	40                   	inc    %eax
405531:	5f                   	pop    %edi
405532:	89 46 34             	mov    %eax,0x34(%esi)
405535:	5e                   	pop    %esi
405536:	5b                   	pop    %ebx
405537:	5d                   	pop    %ebp
405538:	c2 0c 00             	ret    $0xc
40553b:	8b ff                	mov    %edi,%edi
40553d:	55                   	push   %ebp
40553e:	8b ec                	mov    %esp,%ebp
405540:	51                   	push   %ecx
405541:	51                   	push   %ecx
405542:	53                   	push   %ebx
405543:	56                   	push   %esi
405544:	8b f1                	mov    %ecx,%esi
405546:	57                   	push   %edi
405547:	8d 4e 40             	lea    0x40(%esi),%ecx
40554a:	8b b9 04 04 00 00    	mov    0x404(%ecx),%edi
405550:	85 ff                	test   %edi,%edi
405552:	75 02                	jne    0x405556
405554:	8b f9                	mov    %ecx,%edi
405556:	e8 60 fe ff ff       	call   0x4053bb
40555b:	8b 55 0c             	mov    0xc(%ebp),%edx
40555e:	48                   	dec    %eax
40555f:	8b 5d 08             	mov    0x8(%ebp),%ebx
405562:	03 f8                	add    %eax,%edi
405564:	89 7e 34             	mov    %edi,0x34(%esi)
405567:	8b 4e 28             	mov    0x28(%esi),%ecx
40556a:	85 c9                	test   %ecx,%ecx
40556c:	7f 06                	jg     0x405574
40556e:	8b c3                	mov    %ebx,%eax
405570:	0b c2                	or     %edx,%eax
405572:	74 3a                	je     0x4055ae
405574:	6a 00                	push   $0x0
405576:	ff 75 10             	push   0x10(%ebp)
405579:	8d 41 ff             	lea    -0x1(%ecx),%eax
40557c:	52                   	push   %edx
40557d:	53                   	push   %ebx
40557e:	89 46 28             	mov    %eax,0x28(%esi)
405581:	e8 6a 2a 01 00       	call   0x417ff0
405586:	80 c1 30             	add    $0x30,%cl
405589:	89 5d fc             	mov    %ebx,-0x4(%ebp)
40558c:	8b d8                	mov    %eax,%ebx
40558e:	80 f9 39             	cmp    $0x39,%cl
405591:	7e 11                	jle    0x4055a4
405593:	80 7d 14 00          	cmpb   $0x0,0x14(%ebp)
405597:	0f 94 c0             	sete   %al
40559a:	fe c8                	dec    %al
40559c:	24 e0                	and    $0xe0,%al
40559e:	04 61                	add    $0x61,%al
4055a0:	2c 3a                	sub    $0x3a,%al
4055a2:	02 c8                	add    %al,%cl
4055a4:	8b 46 34             	mov    0x34(%esi),%eax
4055a7:	88 08                	mov    %cl,(%eax)
4055a9:	ff 4e 34             	decl   0x34(%esi)
4055ac:	eb b9                	jmp    0x405567
4055ae:	8b 46 34             	mov    0x34(%esi),%eax
4055b1:	2b f8                	sub    %eax,%edi
4055b3:	89 7e 38             	mov    %edi,0x38(%esi)
4055b6:	40                   	inc    %eax
4055b7:	5f                   	pop    %edi
4055b8:	89 46 34             	mov    %eax,0x34(%esi)
4055bb:	5e                   	pop    %esi
4055bc:	5b                   	pop    %ebx
4055bd:	8b e5                	mov    %ebp,%esp
4055bf:	5d                   	pop    %ebp
4055c0:	c2 10 00             	ret    $0x10
4055c3:	8b ff                	mov    %edi,%edi
4055c5:	55                   	push   %ebp
4055c6:	8b ec                	mov    %esp,%ebp
4055c8:	56                   	push   %esi
4055c9:	33 f6                	xor    %esi,%esi
4055cb:	39 75 10             	cmp    %esi,0x10(%ebp)
4055ce:	7e 21                	jle    0x4055f1
4055d0:	53                   	push   %ebx
4055d1:	66 0f be 5d 0c       	movsbw 0xc(%ebp),%bx
4055d6:	57                   	push   %edi
4055d7:	8b 7d 14             	mov    0x14(%ebp),%edi
4055da:	8b 4d 08             	mov    0x8(%ebp),%ecx
4055dd:	57                   	push   %edi
4055de:	53                   	push   %ebx
4055df:	e8 93 0f 00 00       	call   0x406577
4055e4:	83 3f ff             	cmpl   $0xffffffff,(%edi)
4055e7:	74 06                	je     0x4055ef
4055e9:	46                   	inc    %esi
4055ea:	3b 75 10             	cmp    0x10(%ebp),%esi
4055ed:	7c eb                	jl     0x4055da
4055ef:	5f                   	pop    %edi
4055f0:	5b                   	pop    %ebx
4055f1:	5e                   	pop    %esi
4055f2:	5d                   	pop    %ebp
4055f3:	c3                   	ret
4055f4:	8b ff                	mov    %edi,%edi
4055f6:	55                   	push   %ebp
4055f7:	8b ec                	mov    %esp,%ebp
4055f9:	51                   	push   %ecx
4055fa:	33 d2                	xor    %edx,%edx
4055fc:	89 4d fc             	mov    %ecx,-0x4(%ebp)
4055ff:	33 c0                	xor    %eax,%eax
405601:	89 11                	mov    %edx,(%ecx)
405603:	66 89 41 32          	mov    %ax,0x32(%ecx)
405607:	8b c1                	mov    %ecx,%eax
405609:	89 51 04             	mov    %edx,0x4(%ecx)
40560c:	89 51 08             	mov    %edx,0x8(%ecx)
40560f:	89 51 0c             	mov    %edx,0xc(%ecx)
405612:	89 51 10             	mov    %edx,0x10(%ecx)
405615:	89 51 14             	mov    %edx,0x14(%ecx)
405618:	89 51 18             	mov    %edx,0x18(%ecx)
40561b:	89 51 1c             	mov    %edx,0x1c(%ecx)
40561e:	89 51 20             	mov    %edx,0x20(%ecx)
405621:	89 51 24             	mov    %edx,0x24(%ecx)
405624:	89 51 28             	mov    %edx,0x28(%ecx)
405627:	88 51 30             	mov    %dl,0x30(%ecx)
40562a:	89 51 38             	mov    %edx,0x38(%ecx)
40562d:	88 51 3c             	mov    %dl,0x3c(%ecx)
405630:	89 91 40 04 00 00    	mov    %edx,0x440(%ecx)
405636:	89 91 44 04 00 00    	mov    %edx,0x444(%ecx)
40563c:	8b e5                	mov    %ebp,%esp
40563e:	5d                   	pop    %ebp
40563f:	c3                   	ret
405640:	8b ff                	mov    %edi,%edi
405642:	55                   	push   %ebp
405643:	8b ec                	mov    %esp,%ebp
405645:	56                   	push   %esi
405646:	8b f1                	mov    %ecx,%esi
405648:	e8 a7 ff ff ff       	call   0x4055f4
40564d:	8b 45 08             	mov    0x8(%ebp),%eax
405650:	8b 00                	mov    (%eax),%eax
405652:	89 86 48 04 00 00    	mov    %eax,0x448(%esi)
405658:	8b 45 0c             	mov    0xc(%ebp),%eax
40565b:	89 06                	mov    %eax,(%esi)
40565d:	8b 45 10             	mov    0x10(%ebp),%eax
405660:	89 46 04             	mov    %eax,0x4(%esi)
405663:	8b 45 18             	mov    0x18(%ebp),%eax
405666:	89 46 08             	mov    %eax,0x8(%esi)
405669:	8b 45 14             	mov    0x14(%ebp),%eax
40566c:	89 46 10             	mov    %eax,0x10(%esi)
40566f:	8b 45 1c             	mov    0x1c(%ebp),%eax
405672:	89 46 14             	mov    %eax,0x14(%esi)
405675:	8b c6                	mov    %esi,%eax
405677:	5e                   	pop    %esi
405678:	5d                   	pop    %ebp
405679:	c2 18 00             	ret    $0x18
40567c:	8b ff                	mov    %edi,%edi
40567e:	55                   	push   %ebp
40567f:	8b ec                	mov    %esp,%ebp
405681:	56                   	push   %esi
405682:	ff 75 1c             	push   0x1c(%ebp)
405685:	8b f1                	mov    %ecx,%esi
405687:	ff 75 18             	push   0x18(%ebp)
40568a:	ff 75 14             	push   0x14(%ebp)
40568d:	ff 75 10             	push   0x10(%ebp)
405690:	ff 75 0c             	push   0xc(%ebp)
405693:	ff 75 08             	push   0x8(%ebp)
405696:	e8 a5 ff ff ff       	call   0x405640
40569b:	83 a6 50 04 00 00 00 	andl   $0x0,0x450(%esi)
4056a2:	e8 60 26 00 00       	call   0x407d07
4056a7:	89 46 0c             	mov    %eax,0xc(%esi)
4056aa:	8b c6                	mov    %esi,%eax
4056ac:	5e                   	pop    %esi
4056ad:	5d                   	pop    %ebp
4056ae:	c2 18 00             	ret    $0x18
4056b1:	8b ff                	mov    %edi,%edi
4056b3:	55                   	push   %ebp
4056b4:	8b ec                	mov    %esp,%ebp
4056b6:	57                   	push   %edi
4056b7:	8b f9                	mov    %ecx,%edi
4056b9:	8b 4d 08             	mov    0x8(%ebp),%ecx
4056bc:	c6 47 0c 00          	movb   $0x0,0xc(%edi)
4056c0:	85 c9                	test   %ecx,%ecx
4056c2:	74 0a                	je     0x4056ce
4056c4:	8b 01                	mov    (%ecx),%eax
4056c6:	89 47 04             	mov    %eax,0x4(%edi)
4056c9:	8b 41 04             	mov    0x4(%ecx),%eax
4056cc:	eb 16                	jmp    0x4056e4
4056ce:	a1 98 41 42 00       	mov    0x424198,%eax
4056d3:	85 c0                	test   %eax,%eax
4056d5:	75 12                	jne    0x4056e9
4056d7:	a1 c0 31 42 00       	mov    0x4231c0,%eax
4056dc:	89 47 04             	mov    %eax,0x4(%edi)
4056df:	a1 c4 31 42 00       	mov    0x4231c4,%eax
4056e4:	89 47 08             	mov    %eax,0x8(%edi)
4056e7:	eb 44                	jmp    0x40572d
4056e9:	56                   	push   %esi
4056ea:	e8 33 53 00 00       	call   0x40aa22
4056ef:	8d 57 04             	lea    0x4(%edi),%edx
4056f2:	89 07                	mov    %eax,(%edi)
4056f4:	52                   	push   %edx
4056f5:	8d 77 08             	lea    0x8(%edi),%esi
4056f8:	8b 48 4c             	mov    0x4c(%eax),%ecx
4056fb:	89 0a                	mov    %ecx,(%edx)
4056fd:	8b 48 48             	mov    0x48(%eax),%ecx
405700:	50                   	push   %eax
405701:	89 0e                	mov    %ecx,(%esi)
405703:	e8 69 54 00 00       	call   0x40ab71
405708:	56                   	push   %esi
405709:	ff 37                	push   (%edi)
40570b:	e8 8e 54 00 00       	call   0x40ab9e
405710:	8b 0f                	mov    (%edi),%ecx
405712:	83 c4 10             	add    $0x10,%esp
405715:	8b 81 50 03 00 00    	mov    0x350(%ecx),%eax
40571b:	5e                   	pop    %esi
40571c:	a8 02                	test   $0x2,%al
40571e:	75 0d                	jne    0x40572d
405720:	83 c8 02             	or     $0x2,%eax
405723:	89 81 50 03 00 00    	mov    %eax,0x350(%ecx)
405729:	c6 47 0c 01          	movb   $0x1,0xc(%edi)
40572d:	8b c7                	mov    %edi,%eax
40572f:	5f                   	pop    %edi
405730:	5d                   	pop    %ebp
405731:	c2 04 00             	ret    $0x4
405734:	8b ff                	mov    %edi,%edi
405736:	56                   	push   %esi
405737:	8b f1                	mov    %ecx,%esi
405739:	ff b6 04 04 00 00    	push   0x404(%esi)
40573f:	e8 e0 40 00 00       	call   0x409824
405744:	83 a6 04 04 00 00 00 	andl   $0x0,0x404(%esi)
40574b:	59                   	pop    %ecx
40574c:	5e                   	pop    %esi
40574d:	c3                   	ret
40574e:	8b ff                	mov    %edi,%edi
405750:	55                   	push   %ebp
405751:	8b ec                	mov    %esp,%ebp
405753:	56                   	push   %esi
405754:	8b f1                	mov    %ecx,%esi
405756:	ff 36                	push   (%esi)
405758:	e8 c7 40 00 00       	call   0x409824
40575d:	8b 55 08             	mov    0x8(%ebp),%edx
405760:	83 26 00             	andl   $0x0,(%esi)
405763:	59                   	pop    %ecx
405764:	8b 02                	mov    (%edx),%eax
405766:	89 06                	mov    %eax,(%esi)
405768:	8b c6                	mov    %esi,%eax
40576a:	83 22 00             	andl   $0x0,(%edx)
40576d:	5e                   	pop    %esi
40576e:	5d                   	pop    %ebp
40576f:	c2 04 00             	ret    $0x4
405772:	8b ff                	mov    %edi,%edi
405774:	55                   	push   %ebp
405775:	8b ec                	mov    %esp,%ebp
405777:	8b 45 0c             	mov    0xc(%ebp),%eax
40577a:	8b 4d 08             	mov    0x8(%ebp),%ecx
40577d:	53                   	push   %ebx
40577e:	8b 00                	mov    (%eax),%eax
405780:	8b 80 88 00 00 00    	mov    0x88(%eax),%eax
405786:	8b 00                	mov    (%eax),%eax
405788:	8a 18                	mov    (%eax),%bl
40578a:	eb 05                	jmp    0x405791
40578c:	3a c3                	cmp    %bl,%al
40578e:	74 07                	je     0x405797
405790:	41                   	inc    %ecx
405791:	8a 01                	mov    (%ecx),%al
405793:	84 c0                	test   %al,%al
405795:	75 f5                	jne    0x40578c
405797:	8a 01                	mov    (%ecx),%al
405799:	41                   	inc    %ecx
40579a:	84 c0                	test   %al,%al
40579c:	74 28                	je     0x4057c6
40579e:	eb 09                	jmp    0x4057a9
4057a0:	3c 65                	cmp    $0x65,%al
4057a2:	74 0b                	je     0x4057af
4057a4:	3c 45                	cmp    $0x45,%al
4057a6:	74 07                	je     0x4057af
4057a8:	41                   	inc    %ecx
4057a9:	8a 01                	mov    (%ecx),%al
4057ab:	84 c0                	test   %al,%al
4057ad:	75 f1                	jne    0x4057a0
4057af:	8b d1                	mov    %ecx,%edx
4057b1:	49                   	dec    %ecx
4057b2:	80 39 30             	cmpb   $0x30,(%ecx)
4057b5:	74 fa                	je     0x4057b1
4057b7:	38 19                	cmp    %bl,(%ecx)
4057b9:	75 01                	jne    0x4057bc
4057bb:	49                   	dec    %ecx
4057bc:	8a 02                	mov    (%edx),%al
4057be:	41                   	inc    %ecx
4057bf:	42                   	inc    %edx
4057c0:	88 01                	mov    %al,(%ecx)
4057c2:	84 c0                	test   %al,%al
4057c4:	75 f6                	jne    0x4057bc
4057c6:	5b                   	pop    %ebx
4057c7:	5d                   	pop    %ebp
4057c8:	c3                   	ret
4057c9:	8b ff                	mov    %edi,%edi
4057cb:	55                   	push   %ebp
4057cc:	8b ec                	mov    %esp,%ebp
4057ce:	8b 4d 08             	mov    0x8(%ebp),%ecx
4057d1:	8d 41 e0             	lea    -0x20(%ecx),%eax
4057d4:	66 83 f8 5a          	cmp    $0x5a,%ax
4057d8:	77 0f                	ja     0x4057e9
4057da:	0f b7 c1             	movzwl %cx,%eax
4057dd:	0f b6 80 68 bc 41 00 	movzbl 0x41bc68(%eax),%eax
4057e4:	83 e0 0f             	and    $0xf,%eax
4057e7:	eb 02                	jmp    0x4057eb
4057e9:	33 c0                	xor    %eax,%eax
4057eb:	6b c8 09             	imul   $0x9,%eax,%ecx
4057ee:	8b 45 0c             	mov    0xc(%ebp),%eax
4057f1:	0f b6 84 01 88 bc 41 	movzbl 0x41bc88(%ecx,%eax,1),%eax
4057f8:	00
4057f9:	c1 e8 04             	shr    $0x4,%eax
4057fc:	5d                   	pop    %ebp
4057fd:	c2 08 00             	ret    $0x8
405800:	8b ff                	mov    %edi,%edi
405802:	55                   	push   %ebp
405803:	8b ec                	mov    %esp,%ebp
405805:	8b 4d 08             	mov    0x8(%ebp),%ecx
405808:	8d 41 e0             	lea    -0x20(%ecx),%eax
40580b:	66 83 f8 5a          	cmp    $0x5a,%ax
40580f:	77 0f                	ja     0x405820
405811:	0f b7 c1             	movzwl %cx,%eax
405814:	0f b6 88 08 bc 41 00 	movzbl 0x41bc08(%eax),%ecx
40581b:	83 e1 0f             	and    $0xf,%ecx
40581e:	eb 02                	jmp    0x405822
405820:	33 c9                	xor    %ecx,%ecx
405822:	8b 45 0c             	mov    0xc(%ebp),%eax
405825:	0f b6 84 c8 28 bc 41 	movzbl 0x41bc28(%eax,%ecx,8),%eax
40582c:	00
40582d:	c1 e8 04             	shr    $0x4,%eax
405830:	5d                   	pop    %ebp
405831:	c2 08 00             	ret    $0x8