40a5fa:	83 c4 f8             	add    $0xfffffff8,%esp
40a5fd:	53                   	push   %ebx
40a5fe:	56                   	push   %esi
40a5ff:	89 4d f8             	mov    %ecx,-0x8(%ebp)
40a602:	89 55 fc             	mov    %edx,-0x4(%ebp)
40a605:	8b f0                	mov    %eax,%esi
40a607:	bb 00 10 00 00       	mov    $0x1000,%ebx
40a60c:	8b 45 fc             	mov    -0x4(%ebp),%eax
40a60f:	e8 0c a5 ff ff       	call   0x404b20
40a614:	3d 00 0c 00 00       	cmp    $0xc00,%eax
40a619:	7d 26                	jge    0x40a641
40a61b:	8b 45 fc             	mov    -0x4(%ebp),%eax
40a61e:	e8 fd a4 ff ff       	call   0x404b20
40a623:	50                   	push   %eax
40a624:	8b 45 f8             	mov    -0x8(%ebp),%eax
40a627:	50                   	push   %eax
40a628:	8b 45 08             	mov    0x8(%ebp),%eax
40a62b:	50                   	push   %eax
40a62c:	8b 4d fc             	mov    -0x4(%ebp),%ecx
40a62f:	8d 85 f8 ef ff ff    	lea    -0x1008(%ebp),%eax
40a635:	ba ff 0f 00 00       	mov    $0xfff,%edx
40a63a:	e8 09 fb ff ff       	call   0x40a148
40a63f:	eb 0c                	jmp    0x40a64d
40a641:	8b 45 fc             	mov    -0x4(%ebp),%eax
40a644:	e8 d7 a4 ff ff       	call   0x404b20
40a649:	8b d8                	mov    %eax,%ebx
40a64b:	8b c3                	mov    %ebx,%eax
40a64d:	8b d3                	mov    %ebx,%edx
40a64f:	4a                   	dec    %edx
40a650:	3b c2                	cmp    %edx,%eax
40a652:	7c 43                	jl     0x40a697
40a654:	eb 30                	jmp    0x40a686
40a656:	03 db                	add    %ebx,%ebx
40a658:	8b c6                	mov    %esi,%eax
40a65a:	e8 09 a2 ff ff       	call   0x404868
40a65f:	8b c6                	mov    %esi,%eax
40a661:	8b d3                	mov    %ebx,%edx
40a663:	e8 3c a8 ff ff       	call   0x404ea4
40a668:	8b 45 fc             	mov    -0x4(%ebp),%eax
40a66b:	e8 b0 a4 ff ff       	call   0x404b20
40a670:	50                   	push   %eax
40a671:	8b 45 f8             	mov    -0x8(%ebp),%eax
40a674:	50                   	push   %eax
40a675:	8b 45 08             	mov    0x8(%ebp),%eax
40a678:	50                   	push   %eax
40a679:	8b 4d fc             	mov    -0x4(%ebp),%ecx
40a67c:	8b d3                	mov    %ebx,%edx
40a67e:	4a                   	dec    %edx
40a67f:	8b 06                	mov    (%esi),%eax
40a681:	e8 c2 fa ff ff       	call   0x40a148
40a686:	8b d3                	mov    %ebx,%edx
40a688:	4a                   	dec    %edx
40a689:	3b c2                	cmp    %edx,%eax
40a68b:	7d c9                	jge    0x40a656
40a68d:	8b d6                	mov    %esi,%edx
40a68f:	92                   	xchg   %eax,%edx
40a690:	e8 0f a8 ff ff       	call   0x404ea4
40a695:	eb 0e                	jmp    0x40a6a5
40a697:	8d 95 f8 ef ff ff    	lea    -0x1008(%ebp),%edx
40a69d:	8b ce                	mov    %esi,%ecx
40a69f:	91                   	xchg   %eax,%ecx
40a6a0:	e8 b3 a2 ff ff       	call   0x404958
40a6a5:	5e                   	pop    %esi
40a6a6:	5b                   	pop    %ebx
40a6a7:	8b e5                	mov    %ebp,%esp
40a6a9:	5d                   	pop    %ebp
40a6aa:	c2 04 00             	ret    $0x4
40a6ad:	8d 40 00             	lea    0x0(%eax),%eax
40a6b0:	56                   	push   %esi
40a6b1:	31 f6                	xor    %esi,%esi
40a6b3:	aa                   	stos   %al,%es:(%edi)
40a6b4:	08 db                	or     %bl,%bl
40a6b6:	75 04                	jne    0x40a6bc
40a6b8:	31 d2                	xor    %edx,%edx
40a6ba:	eb 0a                	jmp    0x40a6c6
40a6bc:	09 d2                	or     %edx,%edx
40a6be:	7d 06                	jge    0x40a6c6
40a6c0:	b0 2d                	mov    $0x2d,%al
40a6c2:	f7 da                	neg    %edx
40a6c4:	eb 06                	jmp    0x40a6cc
40a6c6:	08 e4                	or     %ah,%ah
40a6c8:	74 03                	je     0x40a6cd
40a6ca:	88 e0                	mov    %ah,%al
40a6cc:	aa                   	stos   %al,%es:(%edi)
40a6cd:	92                   	xchg   %eax,%edx
40a6ce:	50                   	push   %eax
40a6cf:	89 e3                	mov    %esp,%ebx
40a6d1:	31 d2                	xor    %edx,%edx
40a6d3:	f7 b6 88 a1 68 00    	divl   0x68a188(%esi)
40a6d9:	80 c2 30             	add    $0x30,%dl
40a6dc:	88 13                	mov    %dl,(%ebx)
40a6de:	43                   	inc    %ebx
40a6df:	49                   	dec    %ecx
40a6e0:	09 c0                	or     %eax,%eax
40a6e2:	75 ed                	jne    0x40a6d1
40a6e4:	09 c9                	or     %ecx,%ecx
40a6e6:	7f e9                	jg     0x40a6d1
40a6e8:	4b                   	dec    %ebx
40a6e9:	8a 03                	mov    (%ebx),%al
40a6eb:	aa                   	stos   %al,%es:(%edi)
40a6ec:	39 e3                	cmp    %esp,%ebx
40a6ee:	75 f8                	jne    0x40a6e8
40a6f0:	58                   	pop    %eax
40a6f1:	5e                   	pop    %esi
40a6f2:	c3                   	ret
40a6f3:	90                   	nop
40a6f4:	55                   	push   %ebp
40a6f5:	8b ec                	mov    %esp,%ebp
40a6f7:	83 c4 d4             	add    $0xffffffd4,%esp
40a6fa:	57                   	push   %edi
40a6fb:	56                   	push   %esi
40a6fc:	53                   	push   %ebx
40a6fd:	89 45 fc             	mov    %eax,-0x4(%ebp)
40a700:	a0 3b 87 6a 00       	mov    0x6a873b,%al
40a705:	88 45 fb             	mov    %al,-0x5(%ebp)
40a708:	a0 3a 87 6a 00       	mov    0x6a873a,%al
40a70d:	88 45 fa             	mov    %al,-0x6(%ebp)
40a710:	a1 34 87 6a 00       	mov    0x6a8734,%eax
40a715:	89 45 f4             	mov    %eax,-0xc(%ebp)
40a718:	a0 38 87 6a 00       	mov    0x6a8738,%al
40a71d:	88 45 f3             	mov    %al,-0xd(%ebp)
40a720:	a0 39 87 6a 00       	mov    0x6a8739,%al
40a725:	88 45 f2             	mov    %al,-0xe(%ebp)
40a728:	c7 45 ec 00 00 00 00 	movl   $0x0,-0x14(%ebp)
40a72f:	b8 13 00 00 00       	mov    $0x13,%eax
40a734:	80 f9 00             	cmp    $0x0,%cl
40a737:	75 17                	jne    0x40a750
40a739:	8b 45 0c             	mov    0xc(%ebp),%eax
40a73c:	83 f8 02             	cmp    $0x2,%eax
40a73f:	7d 05                	jge    0x40a746
40a741:	b8 02 00 00 00       	mov    $0x2,%eax
40a746:	83 f8 12             	cmp    $0x12,%eax
40a749:	7e 05                	jle    0x40a750
40a74b:	b8 12 00 00 00       	mov    $0x12,%eax
40a750:	89 45 0c             	mov    %eax,0xc(%ebp)
40a753:	50                   	push   %eax
40a754:	b8 0f 27 00 00       	mov    $0x270f,%eax
40a759:	80 7d 10 02          	cmpb   $0x2,0x10(%ebp)
40a75d:	72 03                	jb     0x40a762
40a75f:	8b 45 08             	mov    0x8(%ebp),%eax
40a762:	50                   	push   %eax
40a763:	8d 45 d4             	lea    -0x2c(%ebp),%eax
40a766:	e8 61 02 00 00       	call   0x40a9cc
40a76b:	8b 7d fc             	mov    -0x4(%ebp),%edi
40a76e:	0f b7 45 d4          	movzwl -0x2c(%ebp),%eax
40a772:	2d ff 7f 00 00       	sub    $0x7fff,%eax
40a777:	83 f8 02             	cmp    $0x2,%eax
40a77a:	73 1a                	jae    0x40a796
40a77c:	89 c1                	mov    %eax,%ecx
40a77e:	e8 70 00 00 00       	call   0x40a7f3
40a783:	8d b4 49 e4 a7 40 00 	lea    0x40a7e4(%ecx,%ecx,2),%esi
40a78a:	03 75 ec             	add    -0x14(%ebp),%esi
40a78d:	b9 03 00 00 00       	mov    $0x3,%ecx
40a792:	f3 a4                	rep movsb %ds:(%esi),%es:(%edi)
40a794:	eb 2d                	jmp    0x40a7c3
40a796:	8d 75 d7             	lea    -0x29(%ebp),%esi
40a799:	0f b6 5d 10          	movzbl 0x10(%ebp),%ebx
40a79d:	80 fb 01             	cmp    $0x1,%bl
40a7a0:	74 10                	je     0x40a7b2
40a7a2:	80 fb 04             	cmp    $0x4,%bl
40a7a5:	77 09                	ja     0x40a7b0
40a7a7:	0f bf 45 d4          	movswl -0x2c(%ebp),%eax
40a7ab:	3b 45 0c             	cmp    0xc(%ebp),%eax
40a7ae:	7e 02                	jle    0x40a7b2
40a7b0:	b3 00                	mov    $0x0,%bl
40a7b2:	8d 1c 9d d0 a7 40 00 	lea    0x40a7d0(,%ebx,4),%ebx
40a7b9:	03 5d ec             	add    -0x14(%ebp),%ebx
40a7bc:	8b 1b                	mov    (%ebx),%ebx
40a7be:	03 5d ec             	add    -0x14(%ebp),%ebx
40a7c1:	ff d3                	call   *%ebx
40a7c3:	89 f8                	mov    %edi,%eax
40a7c5:	2b 45 fc             	sub    -0x4(%ebp),%eax
40a7c8:	5b                   	pop    %ebx
40a7c9:	5e                   	pop    %esi
40a7ca:	5f                   	pop    %edi
40a7cb:	e9 f3 01 00 00       	jmp    0x40a9c3
40a7d0:	fd                   	std
40a7d1:	a7                   	cmpsl  %es:(%edi),%ds:(%esi)
40a7d2:	40                   	inc    %eax
40a7d3:	00 5b a8             	add    %bl,-0x58(%ebx)
40a7d6:	40                   	inc    %eax
40a7d7:	00 92 a8 40 00 92    	add    %dl,-0x6dffbf58(%edx)
40a7dd:	a8 40                	test   $0x40,%al
40a7df:	00 fc                	add    %bh,%ah
40a7e1:	a8 40                	test   $0x40,%al
40a7e3:	00 49 4e             	add    %cl,0x4e(%ecx)
40a7e6:	46                   	inc    %esi
40a7e7:	4e                   	dec    %esi
40a7e8:	41                   	inc    %ecx
40a7e9:	4e                   	dec    %esi
40a7ea:	ac                   	lods   %ds:(%esi),%al
40a7eb:	08 c0                	or     %al,%al
40a7ed:	75 03                	jne    0x40a7f2
40a7ef:	b0 30                	mov    $0x30,%al
40a7f1:	4e                   	dec    %esi
40a7f2:	c3                   	ret
40a7f3:	80 7d d6 00          	cmpb   $0x0,-0x2a(%ebp)
40a7f7:	74 03                	je     0x40a7fc
40a7f9:	b0 2d                	mov    $0x2d,%al
40a7fb:	aa                   	stos   %al,%es:(%edi)
40a7fc:	c3                   	ret
40a7fd:	e8 f1 ff ff ff       	call   0x40a7f3
40a802:	0f bf 4d d4          	movswl -0x2c(%ebp),%ecx
40a806:	31 d2                	xor    %edx,%edx
40a808:	3b 4d 0c             	cmp    0xc(%ebp),%ecx
40a80b:	7f 1d                	jg     0x40a82a
40a80d:	83 f9 fd             	cmp    $0xfffffffd,%ecx
40a810:	7c 18                	jl     0x40a82a
40a812:	09 c9                	or     %ecx,%ecx
40a814:	7f 1a                	jg     0x40a830
40a816:	b0 30                	mov    $0x30,%al
40a818:	aa                   	stos   %al,%es:(%edi)
40a819:	80 3e 00             	cmpb   $0x0,(%esi)
40a81c:	74 3c                	je     0x40a85a
40a81e:	8a 45 fb             	mov    -0x5(%ebp),%al
40a821:	aa                   	stos   %al,%es:(%edi)
40a822:	f7 d9                	neg    %ecx
40a824:	b0 30                	mov    $0x30,%al
40a826:	f3 aa                	rep stos %al,%es:(%edi)
40a828:	eb 1a                	jmp    0x40a844
40a82a:	b9 01 00 00 00       	mov    $0x1,%ecx
40a82f:	42                   	inc    %edx
40a830:	ac                   	lods   %ds:(%esi),%al
40a831:	08 c0                	or     %al,%al
40a833:	74 17                	je     0x40a84c
40a835:	aa                   	stos   %al,%es:(%edi)
40a836:	e2 f8                	loop   0x40a830
40a838:	ac                   	lods   %ds:(%esi),%al
40a839:	08 c0                	or     %al,%al
40a83b:	74 13                	je     0x40a850
40a83d:	88 c4                	mov    %al,%ah
40a83f:	8a 45 fb             	mov    -0x5(%ebp),%al
40a842:	66 ab                	stos   %ax,%es:(%edi)
40a844:	ac                   	lods   %ds:(%esi),%al
40a845:	08 c0                	or     %al,%al
40a847:	74 07                	je     0x40a850
40a849:	aa                   	stos   %al,%es:(%edi)
40a84a:	eb f8                	jmp    0x40a844
40a84c:	b0 30                	mov    $0x30,%al
40a84e:	f3 aa                	rep stos %al,%es:(%edi)
40a850:	09 d2                	or     %edx,%edx
40a852:	74 06                	je     0x40a85a
40a854:	31 c0                	xor    %eax,%eax
40a856:	31 c9                	xor    %ecx,%ecx
40a858:	eb 28                	jmp    0x40a882
40a85a:	c3                   	ret
40a85b:	e8 93 ff ff ff       	call   0x40a7f3
40a860:	e8 85 ff ff ff       	call   0x40a7ea
40a865:	8a 65 fb             	mov    -0x5(%ebp),%ah
40a868:	66 ab                	stos   %ax,%es:(%edi)
40a86a:	8b 4d 0c             	mov    0xc(%ebp),%ecx
40a86d:	49                   	dec    %ecx
40a86e:	e8 77 ff ff ff       	call   0x40a7ea
40a873:	aa                   	stos   %al,%es:(%edi)
40a874:	e2 f8                	loop   0x40a86e
40a876:	b4 2b                	mov    $0x2b,%ah
40a878:	8b 4d 08             	mov    0x8(%ebp),%ecx
40a87b:	83 f9 04             	cmp    $0x4,%ecx
40a87e:	72 02                	jb     0x40a882
40a880:	31 c9                	xor    %ecx,%ecx
40a882:	b0 45                	mov    $0x45,%al
40a884:	8a 5d d7             	mov    -0x29(%ebp),%bl
40a887:	0f bf 55 d4          	movswl -0x2c(%ebp),%edx
40a88b:	4a                   	dec    %edx
40a88c:	e8 1f fe ff ff       	call   0x40a6b0
40a891:	c3                   	ret
40a892:	e8 5c ff ff ff       	call   0x40a7f3
40a897:	8b 55 08             	mov    0x8(%ebp),%edx
40a89a:	83 fa 12             	cmp    $0x12,%edx
40a89d:	72 05                	jb     0x40a8a4
40a89f:	ba 12 00 00 00       	mov    $0x12,%edx
40a8a4:	0f bf 4d d4          	movswl -0x2c(%ebp),%ecx
40a8a8:	09 c9                	or     %ecx,%ecx
40a8aa:	7f 05                	jg     0x40a8b1
40a8ac:	b0 30                	mov    $0x30,%al
40a8ae:	aa                   	stos   %al,%es:(%edi)
40a8af:	eb 2a                	jmp    0x40a8db
40a8b1:	31 db                	xor    %ebx,%ebx
40a8b3:	80 7d 10 02          	cmpb   $0x2,0x10(%ebp)
40a8b7:	74 0a                	je     0x40a8c3
40a8b9:	89 c8                	mov    %ecx,%eax
40a8bb:	48                   	dec    %eax
40a8bc:	b3 03                	mov    $0x3,%bl
40a8be:	f6 f3                	div    %bl
40a8c0:	88 e3                	mov    %ah,%bl
40a8c2:	43                   	inc    %ebx
40a8c3:	e8 22 ff ff ff       	call   0x40a7ea
40a8c8:	aa                   	stos   %al,%es:(%edi)
40a8c9:	49                   	dec    %ecx
40a8ca:	74 0f                	je     0x40a8db
40a8cc:	4b                   	dec    %ebx
40a8cd:	75 f4                	jne    0x40a8c3
40a8cf:	8a 45 fa             	mov    -0x6(%ebp),%al
40a8d2:	84 c0                	test   %al,%al
40a8d4:	74 ed                	je     0x40a8c3
40a8d6:	aa                   	stos   %al,%es:(%edi)
40a8d7:	b3 03                	mov    $0x3,%bl
40a8d9:	eb e8                	jmp    0x40a8c3
40a8db:	09 d2                	or     %edx,%edx
40a8dd:	74 1c                	je     0x40a8fb
40a8df:	8a 45 fb             	mov    -0x5(%ebp),%al
40a8e2:	84 c0                	test   %al,%al
40a8e4:	74 01                	je     0x40a8e7
40a8e6:	aa                   	stos   %al,%es:(%edi)
40a8e7:	e3 09                	jecxz  0x40a8f2
40a8e9:	b0 30                	mov    $0x30,%al
40a8eb:	aa                   	stos   %al,%es:(%edi)
40a8ec:	4a                   	dec    %edx
40a8ed:	74 0c                	je     0x40a8fb
40a8ef:	41                   	inc    %ecx
40a8f0:	75 f9                	jne    0x40a8eb
40a8f2:	e8 f3 fe ff ff       	call   0x40a7ea
40a8f7:	aa                   	stos   %al,%es:(%edi)
40a8f8:	4a                   	dec    %edx
40a8f9:	75 f7                	jne    0x40a8f2
40a8fb:	c3                   	ret
40a8fc:	31 db                	xor    %ebx,%ebx
40a8fe:	8a 5d f3             	mov    -0xd(%ebp),%bl
40a901:	b9 03 00 00 00       	mov    $0x3,%ecx
40a906:	80 7d d6 00          	cmpb   $0x0,-0x2a(%ebp)
40a90a:	74 08                	je     0x40a914
40a90c:	8a 5d f2             	mov    -0xe(%ebp),%bl
40a90f:	b9 0f 04 00 00       	mov    $0x40f,%ecx
40a914:	38 cb                	cmp    %cl,%bl
40a916:	76 02                	jbe    0x40a91a
40a918:	88 cb                	mov    %cl,%bl
40a91a:	00 eb                	add    %ch,%bl
40a91c:	8d 9c 9b 5f a9 40 00 	lea    0x40a95f(%ebx,%ebx,4),%ebx
40a923:	03 5d ec             	add    -0x14(%ebp),%ebx
40a926:	b9 05 00 00 00       	mov    $0x5,%ecx
40a92b:	8a 03                	mov    (%ebx),%al
40a92d:	3c 40                	cmp    $0x40,%al
40a92f:	74 1e                	je     0x40a94f
40a931:	51                   	push   %ecx
40a932:	53                   	push   %ebx
40a933:	3c 24                	cmp    $0x24,%al
40a935:	74 07                	je     0x40a93e
40a937:	3c 2a                	cmp    $0x2a,%al
40a939:	74 0a                	je     0x40a945
40a93b:	aa                   	stos   %al,%es:(%edi)
40a93c:	eb 0c                	jmp    0x40a94a
40a93e:	e8 0d 00 00 00       	call   0x40a950
40a943:	eb 05                	jmp    0x40a94a
40a945:	e8 4d ff ff ff       	call   0x40a897
40a94a:	5b                   	pop    %ebx
40a94b:	59                   	pop    %ecx
40a94c:	43                   	inc    %ebx
40a94d:	e2 dc                	loop   0x40a92b
40a94f:	c3                   	ret
40a950:	56                   	push   %esi