40557d:	83 f8 0d             	cmp    $0xd,%eax
405580:	74 05                	je     0x405587
405582:	83 f9 20             	cmp    $0x20,%ecx
405585:	75 0b                	jne    0x405592
405587:	52                   	push   %edx
405588:	ff 15 f0 61 41 00    	call   *0x4161f0
40558e:	89 06                	mov    %eax,(%esi)
405590:	eb da                	jmp    0x40556c
405592:	5e                   	pop    %esi
405593:	c3                   	ret
405594:	8b ff                	mov    %edi,%edi
405596:	55                   	push   %ebp
405597:	8b ec                	mov    %esp,%ebp
405599:	51                   	push   %ecx
40559a:	51                   	push   %ecx
40559b:	53                   	push   %ebx
40559c:	56                   	push   %esi
40559d:	57                   	push   %edi
40559e:	8b f9                	mov    %ecx,%edi
4055a0:	e8 c2 ff ff ff       	call   0x405567
4055a5:	8b 1f                	mov    (%edi),%ebx
4055a7:	33 d2                	xor    %edx,%edx
4055a9:	0f b7 03             	movzwl (%ebx),%eax
4055ac:	66 3b d0             	cmp    %ax,%dx
4055af:	0f 84 2d 01 00 00    	je     0x4056e2
4055b5:	8b 75 08             	mov    0x8(%ebp),%esi
4055b8:	6a 27                	push   $0x27
4055ba:	8d 96 00 20 00 00    	lea    0x2000(%esi),%edx
4055c0:	89 55 fc             	mov    %edx,-0x4(%ebp)
4055c3:	5a                   	pop    %edx
4055c4:	66 3b d0             	cmp    %ax,%dx
4055c7:	0f 85 a8 00 00 00    	jne    0x405675
4055cd:	53                   	push   %ebx
4055ce:	ff 15 f0 61 41 00    	call   *0x4161f0
4055d4:	8b d0                	mov    %eax,%edx
4055d6:	33 db                	xor    %ebx,%ebx
4055d8:	89 17                	mov    %edx,(%edi)
4055da:	0f b7 0a             	movzwl (%edx),%ecx
4055dd:	8b c1                	mov    %ecx,%eax
4055df:	66 3b d9             	cmp    %cx,%bx
4055e2:	74 6e                	je     0x405652
4055e4:	6a 27                	push   $0x27
4055e6:	5b                   	pop    %ebx
4055e7:	66 3b d8             	cmp    %ax,%bx
4055ea:	75 0c                	jne    0x4055f8
4055ec:	52                   	push   %edx
4055ed:	ff 15 f0 61 41 00    	call   *0x4161f0
4055f3:	66 3b 18             	cmp    (%eax),%bx
4055f6:	75 5a                	jne    0x405652
4055f8:	8b 1f                	mov    (%edi),%ebx
4055fa:	6a 27                	push   $0x27
4055fc:	58                   	pop    %eax
4055fd:	66 3b 03             	cmp    (%ebx),%ax
405600:	75 0b                	jne    0x40560d
405602:	53                   	push   %ebx
405603:	ff 15 f0 61 41 00    	call   *0x4161f0
405609:	8b d8                	mov    %eax,%ebx
40560b:	89 1f                	mov    %ebx,(%edi)
40560d:	53                   	push   %ebx
40560e:	ff 15 f0 61 41 00    	call   *0x4161f0
405614:	8b d0                	mov    %eax,%edx
405616:	8b ca                	mov    %edx,%ecx
405618:	89 17                	mov    %edx,(%edi)
40561a:	2b cb                	sub    %ebx,%ecx
40561c:	d1 f9                	sar    $1,%ecx
40561e:	8d 41 01             	lea    0x1(%ecx),%eax
405621:	8d 04 46             	lea    (%esi,%eax,2),%eax
405624:	3b 45 fc             	cmp    -0x4(%ebp),%eax
405627:	0f 83 b5 00 00 00    	jae    0x4056e2
40562d:	85 c9                	test   %ecx,%ecx
40562f:	7e 13                	jle    0x405644
405631:	2b de                	sub    %esi,%ebx
405633:	66 8b 04 33          	mov    (%ebx,%esi,1),%ax
405637:	66 89 06             	mov    %ax,(%esi)
40563a:	83 c6 02             	add    $0x2,%esi
40563d:	83 e9 01             	sub    $0x1,%ecx
405640:	75 f1                	jne    0x405633
405642:	8b 17                	mov    (%edi),%edx
405644:	0f b7 02             	movzwl (%edx),%eax
405647:	33 db                	xor    %ebx,%ebx
405649:	8b c8                	mov    %eax,%ecx
40564b:	66 3b d8             	cmp    %ax,%bx
40564e:	74 02                	je     0x405652
405650:	eb 92                	jmp    0x4055e4
405652:	8b 07                	mov    (%edi),%eax
405654:	33 c9                	xor    %ecx,%ecx
405656:	66 3b 08             	cmp    (%eax),%cx
405659:	0f 84 83 00 00 00    	je     0x4056e2
40565f:	3b 75 fc             	cmp    -0x4(%ebp),%esi
405662:	73 7e                	jae    0x4056e2
405664:	33 c0                	xor    %eax,%eax
405666:	66 89 06             	mov    %ax,(%esi)
405669:	ff 37                	push   (%edi)
40566b:	ff 15 f0 61 41 00    	call   *0x4161f0
405671:	89 07                	mov    %eax,(%edi)
405673:	eb 69                	jmp    0x4056de
405675:	0f b7 c0             	movzwl %ax,%eax
405678:	83 f8 09             	cmp    $0x9,%eax
40567b:	72 0f                	jb     0x40568c
40567d:	83 f8 0a             	cmp    $0xa,%eax
405680:	76 52                	jbe    0x4056d4
405682:	83 f8 0d             	cmp    $0xd,%eax
405685:	74 4d                	je     0x4056d4
405687:	83 f8 20             	cmp    $0x20,%eax
40568a:	74 48                	je     0x4056d4
40568c:	53                   	push   %ebx
40568d:	ff 15 f0 61 41 00    	call   *0x4161f0
405693:	8b d0                	mov    %eax,%edx
405695:	89 45 f8             	mov    %eax,-0x8(%ebp)
405698:	2b d3                	sub    %ebx,%edx
40569a:	89 07                	mov    %eax,(%edi)
40569c:	d1 fa                	sar    $1,%edx
40569e:	8d 4a 01             	lea    0x1(%edx),%ecx
4056a1:	8d 0c 4e             	lea    (%esi,%ecx,2),%ecx
4056a4:	3b 4d fc             	cmp    -0x4(%ebp),%ecx
4056a7:	73 39                	jae    0x4056e2
4056a9:	85 d2                	test   %edx,%edx
4056ab:	7e 16                	jle    0x4056c3
4056ad:	2b de                	sub    %esi,%ebx
4056af:	66 8b 04 33          	mov    (%ebx,%esi,1),%ax
4056b3:	66 89 06             	mov    %ax,(%esi)
4056b6:	83 c6 02             	add    $0x2,%esi
4056b9:	83 ea 01             	sub    $0x1,%edx
4056bc:	75 f1                	jne    0x4056af
4056be:	8b 07                	mov    (%edi),%eax
4056c0:	89 45 f8             	mov    %eax,-0x8(%ebp)
4056c3:	0f b7 00             	movzwl (%eax),%eax
4056c6:	33 d2                	xor    %edx,%edx
4056c8:	8b 5d f8             	mov    -0x8(%ebp),%ebx
4056cb:	8b c8                	mov    %eax,%ecx
4056cd:	66 3b d0             	cmp    %ax,%dx
4056d0:	74 02                	je     0x4056d4
4056d2:	eb a1                	jmp    0x405675
4056d4:	3b 75 fc             	cmp    -0x4(%ebp),%esi
4056d7:	73 09                	jae    0x4056e2
4056d9:	33 c0                	xor    %eax,%eax
4056db:	66 89 06             	mov    %ax,(%esi)
4056de:	33 c0                	xor    %eax,%eax
4056e0:	eb 05                	jmp    0x4056e7
4056e2:	b8 09 00 02 80       	mov    $0x80020009,%eax
4056e7:	5f                   	pop    %edi
4056e8:	5e                   	pop    %esi
4056e9:	5b                   	pop    %ebx
4056ea:	c9                   	leave
4056eb:	c2 04 00             	ret    $0x4
4056ee:	8b ff                	mov    %edi,%edi
4056f0:	55                   	push   %ebp
4056f1:	8b ec                	mov    %esp,%ebp
4056f3:	6a ff                	push   $0xffffffff
4056f5:	68 99 2b 41 00       	push   $0x412b99
4056fa:	64 a1 00 00 00 00    	mov    %fs:0x0,%eax
405700:	50                   	push   %eax
405701:	51                   	push   %ecx
405702:	b8 28 21 00 00       	mov    $0x2128,%eax
405707:	e8 b4 d3 00 00       	call   0x412ac0
40570c:	a1 f4 51 41 00       	mov    0x4151f4,%eax
405711:	33 c5                	xor    %ebp,%eax
405713:	89 45 ec             	mov    %eax,-0x14(%ebp)
405716:	53                   	push   %ebx
405717:	56                   	push   %esi
405718:	57                   	push   %edi
405719:	50                   	push   %eax
40571a:	8d 45 f4             	lea    -0xc(%ebp),%eax
40571d:	64 a3 00 00 00 00    	mov    %eax,%fs:0x0
405723:	89 65 f0             	mov    %esp,-0x10(%ebp)
405726:	8b f9                	mov    %ecx,%edi
405728:	89 bd d0 de ff ff    	mov    %edi,-0x2130(%ebp)
40572e:	8b 45 08             	mov    0x8(%ebp),%eax
405731:	89 85 dc de ff ff    	mov    %eax,-0x2124(%ebp)
405737:	8b 45 0c             	mov    0xc(%ebp),%eax
40573a:	89 85 e0 de ff ff    	mov    %eax,-0x2120(%ebp)
405740:	8b 45 10             	mov    0x10(%ebp),%eax
405743:	89 85 c8 de ff ff    	mov    %eax,-0x2138(%ebp)
405749:	8d 85 ec df ff ff    	lea    -0x2014(%ebp),%eax
40574f:	50                   	push   %eax
405750:	89 bd d8 de ff ff    	mov    %edi,-0x2128(%ebp)
405756:	e8 39 fe ff ff       	call   0x405594
40575b:	85 c0                	test   %eax,%eax
40575d:	0f 88 f8 03 00 00    	js     0x405b5b
405763:	33 db                	xor    %ebx,%ebx
405765:	8b f3                	mov    %ebx,%esi
405767:	ff 34 f5 98 16 40 00 	push   0x401698(,%esi,8)
40576e:	8d 85 ec df ff ff    	lea    -0x2014(%ebp),%eax
405774:	50                   	push   %eax
405775:	ff 15 d4 60 41 00    	call   *0x4160d4
40577b:	85 c0                	test   %eax,%eax
40577d:	74 10                	je     0x40578f
40577f:	46                   	inc    %esi
405780:	83 fe 04             	cmp    $0x4,%esi
405783:	72 e2                	jb     0x405767
405785:	b8 09 00 02 80       	mov    $0x80020009,%eax
40578a:	e9 cc 03 00 00       	jmp    0x405b5b
40578f:	0f b7 34 f5 9c 16 40 	movzwl 0x40169c(,%esi,8),%esi
405796:	00
405797:	8b cf                	mov    %edi,%ecx
405799:	e8 c9 fd ff ff       	call   0x405567
40579e:	8d 85 ec df ff ff    	lea    -0x2014(%ebp),%eax
4057a4:	8b cf                	mov    %edi,%ecx
4057a6:	50                   	push   %eax
4057a7:	e8 e8 fd ff ff       	call   0x405594
4057ac:	85 c0                	test   %eax,%eax
4057ae:	0f 88 a7 03 00 00    	js     0x405b5b
4057b4:	8b c6                	mov    %esi,%eax
4057b6:	6a 02                	push   $0x2
4057b8:	5f                   	pop    %edi
4057b9:	83 e8 08             	sub    $0x8,%eax
4057bc:	0f 84 36 03 00 00    	je     0x405af8
4057c2:	83 e8 09             	sub    $0x9,%eax
4057c5:	0f 84 b3 01 00 00    	je     0x40597e
4057cb:	2b c7                	sub    %edi,%eax
4057cd:	0f 84 33 01 00 00    	je     0x405906
4057d3:	2d f5 3f 00 00       	sub    $0x3ff5,%eax
4057d8:	0f 85 66 03 00 00    	jne    0x405b44
4057de:	8d 8d ec df ff ff    	lea    -0x2014(%ebp),%ecx
4057e4:	8d 51 02             	lea    0x2(%ecx),%edx
4057e7:	66 8b 01             	mov    (%ecx),%ax
4057ea:	03 cf                	add    %edi,%ecx
4057ec:	66 3b c3             	cmp    %bx,%ax
4057ef:	75 f6                	jne    0x4057e7
4057f1:	2b ca                	sub    %edx,%ecx
4057f3:	89 9d e8 de ff ff    	mov    %ebx,-0x2118(%ebp)
4057f9:	d1 f9                	sar    $1,%ecx
4057fb:	8d 41 02             	lea    0x2(%ecx),%eax
4057fe:	f7 e7                	mul    %edi
405800:	89 5d fc             	mov    %ebx,-0x4(%ebp)
405803:	c6 45 fc 01          	movb   $0x1,-0x4(%ebp)
405807:	3b d3                	cmp    %ebx,%edx
405809:	0f 87 68 03 00 00    	ja     0x405b77
40580f:	72 09                	jb     0x40581a
405811:	83 f8 ff             	cmp    $0xffffffff,%eax
405814:	0f 87 5d 03 00 00    	ja     0x405b77
40581a:	3d 00 01 00 00       	cmp    $0x100,%eax
40581f:	76 14                	jbe    0x405835
405821:	50                   	push   %eax
405822:	8d 8d e8 de ff ff    	lea    -0x2118(%ebp),%ecx
405828:	e8 dd 31 00 00       	call   0x408a0a
40582d:	8b b5 e8 de ff ff    	mov    -0x2118(%ebp),%esi
405833:	eb 0c                	jmp    0x405841
405835:	8d b5 ec de ff ff    	lea    -0x2114(%ebp),%esi
40583b:	89 b5 e8 de ff ff    	mov    %esi,-0x2118(%ebp)
405841:	89 5d fc             	mov    %ebx,-0x4(%ebp)
405844:	eb 20                	jmp    0x405866
405846:	b8 4c 58 40 00       	mov    $0x40584c,%eax
40584b:	c3                   	ret
40584c:	33 db                	xor    %ebx,%ebx
40584e:	89 5d fc             	mov    %ebx,-0x4(%ebp)
405851:	8b 85 d8 de ff ff    	mov    -0x2128(%ebp),%eax
405857:	8b b5 e8 de ff ff    	mov    -0x2118(%ebp),%esi
40585d:	6a 02                	push   $0x2
40585f:	5f                   	pop    %edi
405860:	89 85 d0 de ff ff    	mov    %eax,-0x2130(%ebp)
405866:	85 f6                	test   %esi,%esi
405868:	74 7b                	je     0x4058e5
40586a:	66 83 bd ec df ff ff 	cmpw   $0x0,-0x2014(%ebp)
405871:	00
405872:	8d 85 ec df ff ff    	lea    -0x2014(%ebp),%eax
405878:	89 85 e4 de ff ff    	mov    %eax,-0x211c(%ebp)
40587e:	74 40                	je     0x4058c0
405880:	50                   	push   %eax
405881:	ff 15 f0 61 41 00    	call   *0x4161f0
405887:	8b c8                	mov    %eax,%ecx
405889:	8b 85 e4 de ff ff    	mov    -0x211c(%ebp),%eax
40588f:	0f b7 10             	movzwl (%eax),%edx
405892:	83 fa 5c             	cmp    $0x5c,%edx
405895:	75 1c                	jne    0x4058b3
405897:	6a 30                	push   $0x30
405899:	58                   	pop    %eax
40589a:	66 39 01             	cmp    %ax,(%ecx)
40589d:	8b 85 e4 de ff ff    	mov    -0x211c(%ebp),%eax
4058a3:	75 0e                	jne    0x4058b3
4058a5:	33 c0                	xor    %eax,%eax
4058a7:	51                   	push   %ecx
4058a8:	66 89 06             	mov    %ax,(%esi)
4058ab:	ff 15 f0 61 41 00    	call   *0x4161f0
4058b1:	eb 05                	jmp    0x4058b8
4058b3:	66 89 16             	mov    %dx,(%esi)
4058b6:	03 c7                	add    %edi,%eax
4058b8:	83 c6 02             	add    $0x2,%esi
4058bb:	66 39 18             	cmp    %bx,(%eax)
4058be:	eb b8                	jmp    0x405878
4058c0:	8b 8d dc de ff ff    	mov    -0x2124(%ebp),%ecx
4058c6:	33 c0                	xor    %eax,%eax
4058c8:	89 06                	mov    %eax,(%esi)
4058ca:	ff b5 e8 de ff ff    	push   -0x2118(%ebp)
4058d0:	ff b5 e0 de ff ff    	push   -0x2120(%ebp)
4058d6:	e8 e7 f4 ff ff       	call   0x404dc2
4058db:	8b b5 e8 de ff ff    	mov    -0x2118(%ebp),%esi
4058e1:	8b f8                	mov    %eax,%edi
4058e3:	eb 03                	jmp    0x4058e8
4058e5:	6a 0e                	push   $0xe
4058e7:	5f                   	pop    %edi
4058e8:	8d 85 ec de ff ff    	lea    -0x2114(%ebp),%eax
4058ee:	3b f0                	cmp    %eax,%esi
4058f0:	0f 84 41 02 00 00    	je     0x405b37
4058f6:	8d 8d e8 de ff ff    	lea    -0x2118(%ebp),%ecx
4058fc:	e8 2e 26 00 00       	call   0x407f2f
405901:	e9 31 02 00 00       	jmp    0x405b37
405906:	8d 85 e4 de ff ff    	lea    -0x211c(%ebp),%eax
40590c:	89 9d e4 de ff ff    	mov    %ebx,-0x211c(%ebp)
405912:	50                   	push   %eax
405913:	53                   	push   %ebx
405914:	53                   	push   %ebx
405915:	8d 85 ec df ff ff    	lea    -0x2014(%ebp),%eax
40591b:	89 9d d8 de ff ff    	mov    %ebx,-0x2128(%ebp)
405921:	50                   	push   %eax
405922:	ff 15 bc 61 41 00    	call   *0x4161bc
405928:	8b f0                	mov    %eax,%esi
40592a:	85 f6                	test   %esi,%esi
40592c:	79 12                	jns    0x405940
40592e:	8d 8d d8 de ff ff    	lea    -0x2128(%ebp),%ecx
405934:	e8 84 1e 00 00       	call   0x4077bd
405939:	8b c6                	mov    %esi,%eax
40593b:	e9 1b 02 00 00       	jmp    0x405b5b
405940:	8b 85 e4 de ff ff    	mov    -0x211c(%ebp),%eax
405946:	6a 04                	push   $0x4
405948:	89 85 d4 de ff ff    	mov    %eax,-0x212c(%ebp)
40594e:	8d 85 d4 de ff ff    	lea    -0x212c(%ebp),%eax
405954:	50                   	push   %eax
405955:	8b 85 dc de ff ff    	mov    -0x2124(%ebp),%eax
40595b:	6a 04                	push   $0x4
40595d:	53                   	push   %ebx
40595e:	ff b5 e0 de ff ff    	push   -0x2120(%ebp)
405964:	ff 30                	push   (%eax)
405966:	ff 15 08 60 41 00    	call   *0x416008
40596c:	8d 8d d8 de ff ff    	lea    -0x2128(%ebp),%ecx
405972:	8b f8                	mov    %eax,%edi
405974:	e8 44 1e 00 00       	call   0x4077bd
405979:	e9 b9 01 00 00       	jmp    0x405b37
40597e:	8d 8d ec df ff ff    	lea    -0x2014(%ebp),%ecx
405984:	8d 51 02             	lea    0x2(%ecx),%edx
405987:	66 8b 01             	mov    (%ecx),%ax
40598a:	03 cf                	add    %edi,%ecx
40598c:	66 3b c3             	cmp    %bx,%ax
40598f:	75 f6                	jne    0x405987
405991:	2b ca                	sub    %edx,%ecx
405993:	d1 f9                	sar    $1,%ecx
405995:	89 8d e4 de ff ff    	mov    %ecx,-0x211c(%ebp)
40599b:	89 8d cc de ff ff    	mov    %ecx,-0x2134(%ebp)
4059a1:	f6 c1 01             	test   $0x1,%cl
4059a4:	0f 85 85 00 00 00    	jne    0x405a2f
4059aa:	8b c1                	mov    %ecx,%eax
4059ac:	89 9d e8 de ff ff    	mov    %ebx,-0x2118(%ebp)
4059b2:	99                   	cltd
4059b3:	2b c2                	sub    %edx,%eax
4059b5:	8b f8                	mov    %eax,%edi
4059b7:	d1 ff                	sar    $1,%edi
4059b9:	89 bd d4 de ff ff    	mov    %edi,-0x212c(%ebp)
4059bf:	c7 45 fc 03 00 00 00 	movl   $0x3,-0x4(%ebp)
4059c6:	c6 45 fc 04          	movb   $0x4,-0x4(%ebp)
4059ca:	81 ff 00 01 00 00    	cmp    $0x100,%edi