40a545:	87 42 19             	xchg   %eax,0x19(%edx)
40a548:	c3                   	ret
40a549:	8d 40 00             	lea    0x0(%eax),%eax
40a54c:	8d 54 10 2d          	lea    0x2d(%eax,%edx,1),%edx
40a550:	39 0a                	cmp    %ecx,(%edx)
40a552:	74 07                	je     0x40a55b
40a554:	89 0a                	mov    %ecx,(%edx)
40a556:	e8 95 ff ff ff       	call   0x40a4f0
40a55b:	c3                   	ret
40a55c:	8b 50 45             	mov    0x45(%eax),%edx
40a55f:	81 e2 01 01 01 00    	and    $0x10101,%edx
40a565:	8b 40 41             	mov    0x41(%eax),%eax
40a568:	3d bc 02 00 00       	cmp    $0x2bc,%eax
40a56d:	0f 9d c0             	setge  %al
40a570:	01 d2                	add    %edx,%edx
40a572:	09 d0                	or     %edx,%eax
40a574:	c1 ea 07             	shr    $0x7,%edx
40a577:	09 d0                	or     %edx,%eax
40a579:	c1 ea 07             	shr    $0x7,%edx
40a57c:	09 d0                	or     %edx,%eax
40a57e:	c3                   	ret
40a57f:	90                   	nop
40a580:	57                   	push   %edi
40a581:	89 c7                	mov    %eax,%edi
40a583:	52                   	push   %edx
40a584:	e8 d3 ff ff ff       	call   0x40a55c
40a589:	5a                   	pop    %edx
40a58a:	38 d0                	cmp    %dl,%al
40a58c:	74 3d                	je     0x40a5cb
40a58e:	57                   	push   %edi
40a58f:	8d 7f 41             	lea    0x41(%edi),%edi
40a592:	8b 0f                	mov    (%edi),%ecx
40a594:	d1 ea                	shr    $1,%edx
40a596:	73 0f                	jae    0x40a5a7
40a598:	81 f9 bc 02 00 00    	cmp    $0x2bc,%ecx
40a59e:	7d 11                	jge    0x40a5b1
40a5a0:	b9 bc 02 00 00       	mov    $0x2bc,%ecx
40a5a5:	eb 0a                	jmp    0x40a5b1
40a5a7:	81 f9 bc 02 00 00    	cmp    $0x2bc,%ecx
40a5ad:	7c 02                	jl     0x40a5b1
40a5af:	31 c9                	xor    %ecx,%ecx
40a5b1:	91                   	xchg   %eax,%ecx
40a5b2:	ab                   	stos   %eax,%es:(%edi)
40a5b3:	d1 ea                	shr    $1,%edx
40a5b5:	0f 92 c0             	setb   %al
40a5b8:	aa                   	stos   %al,%es:(%edi)
40a5b9:	d1 ea                	shr    $1,%edx
40a5bb:	0f 92 c0             	setb   %al
40a5be:	aa                   	stos   %al,%es:(%edi)
40a5bf:	d1 ea                	shr    $1,%edx
40a5c1:	0f 92 c0             	setb   %al
40a5c4:	aa                   	stos   %al,%es:(%edi)
40a5c5:	58                   	pop    %eax
40a5c6:	e8 25 ff ff ff       	call   0x40a4f0
40a5cb:	5f                   	pop    %edi
40a5cc:	c3                   	ret
40a5cd:	8d 40 00             	lea    0x0(%eax),%eax
40a5d0:	53                   	push   %ebx
40a5d1:	93                   	xchg   %eax,%ebx
40a5d2:	8b 4b 19             	mov    0x19(%ebx),%ecx
40a5d5:	e3 1a                	jecxz  0x40a5f1
40a5d7:	8b 43 2d             	mov    0x2d(%ebx),%eax
40a5da:	e8 85 fe ff ff       	call   0x40a464
40a5df:	3b 43 21             	cmp    0x21(%ebx),%eax
40a5e2:	74 0d                	je     0x40a5f1
40a5e4:	89 d8                	mov    %ebx,%eax
40a5e6:	e8 51 ff ff ff       	call   0x40a53c
40a5eb:	50                   	push   %eax
40a5ec:	e8 0f a3 ff ff       	call   0x404900
40a5f1:	8b 4b 19             	mov    0x19(%ebx),%ecx
40a5f4:	41                   	inc    %ecx
40a5f5:	e2 2c                	loop   0x40a623
40a5f7:	8b 4b 1d             	mov    0x1d(%ebx),%ecx
40a5fa:	e3 17                	jecxz  0x40a613
40a5fc:	8d 51 2d             	lea    0x2d(%ecx),%edx
40a5ff:	8d 43 2d             	lea    0x2d(%ebx),%eax
40a602:	b9 40 00 00 00       	mov    $0x40,%ecx
40a607:	e8 cc b1 ff ff       	call   0x4057d8
40a60c:	84 c0                	test   %al,%al
40a60e:	8b 43 1d             	mov    0x1d(%ebx),%eax
40a611:	75 be                	jne    0x40a5d1
40a613:	8b 43 2d             	mov    0x2d(%ebx),%eax
40a616:	e8 49 fe ff ff       	call   0x40a464
40a61b:	89 43 21             	mov    %eax,0x21(%ebx)
40a61e:	93                   	xchg   %eax,%ebx
40a61f:	ff 50 71             	call   *0x71(%eax)
40a622:	91                   	xchg   %eax,%ecx
40a623:	91                   	xchg   %eax,%ecx
40a624:	5b                   	pop    %ebx
40a625:	c3                   	ret
40a626:	8b c0                	mov    %eax,%eax
40a628:	53                   	push   %ebx
40a629:	93                   	xchg   %eax,%ebx
40a62a:	8b 43 19             	mov    0x19(%ebx),%eax
40a62d:	85 c0                	test   %eax,%eax
40a62f:	75 3b                	jne    0x40a66c
40a631:	8b 43 2d             	mov    0x2d(%ebx),%eax
40a634:	e8 2b fe ff ff       	call   0x40a464
40a639:	31 d2                	xor    %edx,%edx
40a63b:	8b 4b 31             	mov    0x31(%ebx),%ecx
40a63e:	51                   	push   %ecx
40a63f:	e3 04                	jecxz  0x40a645
40a641:	b2 03                	mov    $0x3,%dl
40a643:	eb 19                	jmp    0x40a65e
40a645:	8a 4b 35             	mov    0x35(%ebx),%cl
40a648:	88 ca                	mov    %cl,%dl
40a64a:	80 e9 02             	sub    $0x2,%cl
40a64d:	7c 0f                	jl     0x40a65e
40a64f:	87 0c 24             	xchg   %ecx,(%esp)
40a652:	8b 43 36             	mov    0x36(%ebx),%eax
40a655:	e8 0a fe ff ff       	call   0x40a464
40a65a:	31 d2                	xor    %edx,%edx
40a65c:	b2 02                	mov    $0x2,%dl
40a65e:	50                   	push   %eax
40a65f:	52                   	push   %edx
40a660:	54                   	push   %esp
40a661:	e8 5a a2 ff ff       	call   0x4048c0
40a666:	89 43 19             	mov    %eax,0x19(%ebx)
40a669:	83 c4 0c             	add    $0xc,%esp
40a66c:	5b                   	pop    %ebx
40a66d:	c3                   	ret
40a66e:	8b c0                	mov    %eax,%eax
40a670:	53                   	push   %ebx
40a671:	89 c3                	mov    %eax,%ebx
40a673:	8b 48 29             	mov    0x29(%eax),%ecx
40a676:	e3 4e                	jecxz  0x40a6c6
40a678:	89 c8                	mov    %ecx,%eax
40a67a:	e8 51 ff ff ff       	call   0x40a5d0
40a67f:	50                   	push   %eax
40a680:	89 d8                	mov    %ebx,%eax
40a682:	e8 c9 02 00 00       	call   0x40a950
40a687:	89 d8                	mov    %ebx,%eax
40a689:	e8 a2 02 00 00       	call   0x40a930
40a68e:	50                   	push   %eax
40a68f:	e8 c4 a2 ff ff       	call   0x404958
40a694:	8b 53 29             	mov    0x29(%ebx),%edx
40a697:	80 7a 35 00          	cmpb   $0x0,0x35(%edx)
40a69b:	8b 42 2d             	mov    0x2d(%edx),%eax
40a69e:	8b 5b 1c             	mov    0x1c(%ebx),%ebx
40a6a1:	b9 64 a4 40 00       	mov    $0x40a464,%ecx
40a6a6:	75 09                	jne    0x40a6b1
40a6a8:	6a 02                	push   $0x2
40a6aa:	53                   	push   %ebx
40a6ab:	ff d1                	call   *%ecx
40a6ad:	50                   	push   %eax
40a6ae:	53                   	push   %ebx
40a6af:	eb 09                	jmp    0x40a6ba
40a6b1:	6a 01                	push   $0x1
40a6b3:	53                   	push   %ebx
40a6b4:	ff d1                	call   *%ecx
40a6b6:	f7 d0                	not    %eax
40a6b8:	50                   	push   %eax
40a6b9:	53                   	push   %ebx
40a6ba:	e8 a1 a2 ff ff       	call   0x404960
40a6bf:	e8 a4 a2 ff ff       	call   0x404968
40a6c4:	5b                   	pop    %ebx
40a6c5:	c3                   	ret
40a6c6:	8b 4b 18             	mov    0x18(%ebx),%ecx
40a6c9:	e3 f9                	jecxz  0x40a6c4
40a6cb:	8b 81 a4 00 00 00    	mov    0xa4(%ecx),%eax
40a6d1:	31 c9                	xor    %ecx,%ecx
40a6d3:	eb c9                	jmp    0x40a69e
40a6d5:	c3                   	ret
40a6d6:	8b c0                	mov    %eax,%eax
40a6d8:	53                   	push   %ebx
40a6d9:	89 c3                	mov    %eax,%ebx
40a6db:	8b 48 31             	mov    0x31(%eax),%ecx
40a6de:	e3 30                	jecxz  0x40a710
40a6e0:	8b 41 2d             	mov    0x2d(%ecx),%eax
40a6e3:	51                   	push   %ecx
40a6e4:	e8 7b fd ff ff       	call   0x40a464
40a6e9:	87 04 24             	xchg   %eax,(%esp)
40a6ec:	e8 df fe ff ff       	call   0x40a5d0
40a6f1:	50                   	push   %eax
40a6f2:	89 d8                	mov    %ebx,%eax
40a6f4:	e8 57 02 00 00       	call   0x40a950
40a6f9:	89 d8                	mov    %ebx,%eax
40a6fb:	e8 30 02 00 00       	call   0x40a930
40a700:	50                   	push   %eax
40a701:	89 c3                	mov    %eax,%ebx
40a703:	e8 50 a2 ff ff       	call   0x404958
40a708:	53                   	push   %ebx
40a709:	e8 92 a2 ff ff       	call   0x4049a0
40a70e:	5b                   	pop    %ebx
40a70f:	c3                   	ret
40a710:	8b 4b 18             	mov    0x18(%ebx),%ecx
40a713:	e3 f9                	jecxz  0x40a70e
40a715:	8b 5b 1c             	mov    0x1c(%ebx),%ebx
40a718:	8b 81 a0 00 00 00    	mov    0xa0(%ecx),%eax
40a71e:	e8 41 fd ff ff       	call   0x40a464
40a723:	50                   	push   %eax
40a724:	eb e2                	jmp    0x40a708
40a726:	c3                   	ret
40a727:	90                   	nop
40a728:	8b 48 2d             	mov    0x2d(%eax),%ecx
40a72b:	e3 30                	jecxz  0x40a75d
40a72d:	53                   	push   %ebx
40a72e:	89 c3                	mov    %eax,%ebx
40a730:	8a 51 3b             	mov    0x3b(%ecx),%dl
40a733:	0f b6 d2             	movzbl %dl,%edx
40a736:	42                   	inc    %edx
40a737:	52                   	push   %edx
40a738:	89 c8                	mov    %ecx,%eax
40a73a:	e8 91 fe ff ff       	call   0x40a5d0
40a73f:	50                   	push   %eax
40a740:	89 d8                	mov    %ebx,%eax
40a742:	e8 09 02 00 00       	call   0x40a950
40a747:	89 d8                	mov    %ebx,%eax
40a749:	e8 e2 01 00 00       	call   0x40a930
40a74e:	50                   	push   %eax
40a74f:	89 c3                	mov    %eax,%ebx
40a751:	e8 02 a2 ff ff       	call   0x404958
40a756:	53                   	push   %ebx
40a757:	e8 2c a2 ff ff       	call   0x404988
40a75c:	5b                   	pop    %ebx
40a75d:	c3                   	ret
40a75e:	8b c0                	mov    %eax,%eax
40a760:	53                   	push   %ebx
40a761:	56                   	push   %esi
40a762:	57                   	push   %edi
40a763:	8d 58 28             	lea    0x28(%eax),%ebx
40a766:	8b 40 1c             	mov    0x1c(%eax),%eax
40a769:	85 c0                	test   %eax,%eax
40a76b:	74 46                	je     0x40a7b3
40a76d:	0f b6 13             	movzbl (%ebx),%edx
40a770:	80 e2 0e             	and    $0xe,%dl
40a773:	74 3e                	je     0x40a7b3
40a775:	50                   	push   %eax
40a776:	8d 3d fc 98 42 00    	lea    0x4298fc,%edi
40a77c:	8b 0f                	mov    (%edi),%ecx
40a77e:	41                   	inc    %ecx
40a77f:	e2 14                	loop   0x40a795
40a781:	be 28 49 40 00       	mov    $0x404928,%esi
40a786:	6a 07                	push   $0x7
40a788:	ff d6                	call   *%esi
40a78a:	ab                   	stos   %eax,%es:(%edi)
40a78b:	6a 05                	push   $0x5
40a78d:	ff d6                	call   *%esi
40a78f:	ab                   	stos   %eax,%es:(%edi)
40a790:	6a 0d                	push   $0xd
40a792:	ff d6                	call   *%esi
40a794:	ab                   	stos   %eax,%es:(%edi)
40a795:	8d 35 fc 98 42 00    	lea    0x4298fc,%esi
40a79b:	5a                   	pop    %edx
40a79c:	ad                   	lods   %ds:(%esi),%eax
40a79d:	50                   	push   %eax
40a79e:	52                   	push   %edx
40a79f:	ad                   	lods   %ds:(%esi),%eax
40a7a0:	50                   	push   %eax
40a7a1:	52                   	push   %edx
40a7a2:	ad                   	lods   %ds:(%esi),%eax
40a7a3:	50                   	push   %eax
40a7a4:	52                   	push   %edx
40a7a5:	be 58 49 40 00       	mov    $0x404958,%esi
40a7aa:	ff d6                	call   *%esi
40a7ac:	ff d6                	call   *%esi
40a7ae:	ff d6                	call   *%esi
40a7b0:	80 23 f1             	andb   $0xf1,(%ebx)
40a7b3:	5f                   	pop    %edi
40a7b4:	5e                   	pop    %esi
40a7b5:	5b                   	pop    %ebx
40a7b6:	c3                   	ret
40a7b7:	90                   	nop
40a7b8:	55                   	push   %ebp
40a7b9:	8b ec                	mov    %esp,%ebp
40a7bb:	53                   	push   %ebx
40a7bc:	56                   	push   %esi
40a7bd:	8b 5d 0c             	mov    0xc(%ebp),%ebx
40a7c0:	8b 75 08             	mov    0x8(%ebp),%esi
40a7c3:	89 f0                	mov    %esi,%eax
40a7c5:	f6 c3 10             	test   $0x10,%bl
40a7c8:	74 05                	je     0x40a7cf
40a7ca:	e8 d5 00 00 00       	call   0x40a8a4
40a7cf:	80 e3 0f             	and    $0xf,%bl
40a7d2:	f6 c3 01             	test   $0x1,%bl
40a7d5:	74 09                	je     0x40a7e0
40a7d7:	e8 54 01 00 00       	call   0x40a930
40a7dc:	85 c0                	test   %eax,%eax
40a7de:	74 42                	je     0x40a822
40a7e0:	8a 46 28             	mov    0x28(%esi),%al
40a7e3:	f7 d0                	not    %eax
40a7e5:	20 c3                	and    %al,%bl
40a7e7:	74 36                	je     0x40a81f
40a7e9:	f6 c3 08             	test   $0x8,%bl
40a7ec:	74 07                	je     0x40a7f5
40a7ee:	89 f0                	mov    %esi,%eax
40a7f0:	e8 e3 fe ff ff       	call   0x40a6d8
40a7f5:	f6 c3 02             	test   $0x2,%bl
40a7f8:	74 16                	je     0x40a810
40a7fa:	89 f0                	mov    %esi,%eax
40a7fc:	e8 27 ff ff ff       	call   0x40a728
40a801:	8b 4e 2d             	mov    0x2d(%esi),%ecx
40a804:	67 e3 09             	jcxz   0x40a810
40a807:	8a 41 36             	mov    0x36(%ecx),%al
40a80a:	fe c8                	dec    %al
40a80c:	2c 03                	sub    $0x3,%al
40a80e:	72 05                	jb     0x40a815
40a810:	f6 c3 04             	test   $0x4,%bl
40a813:	74 07                	je     0x40a81c
40a815:	89 f0                	mov    %esi,%eax
40a817:	e8 54 fe ff ff       	call   0x40a670
40a81c:	08 5e 28             	or     %bl,0x28(%esi)
40a81f:	8b 46 1c             	mov    0x1c(%esi),%eax
40a822:	5e                   	pop    %esi
40a823:	5b                   	pop    %ebx
40a824:	5d                   	pop    %ebp
40a825:	c2 08 00             	ret    $0x8
40a828:	53                   	push   %ebx
40a829:	56                   	push   %esi
40a82a:	89 d6                	mov    %edx,%esi
40a82c:	89 c3                	mov    %eax,%ebx
40a82e:	8b 4b 1c             	mov    0x1c(%ebx),%ecx
40a831:	39 f1                	cmp    %esi,%ecx
40a833:	74 58                	je     0x40a88d
40a835:	e3 41                	jecxz  0x40a878
40a837:	51                   	push   %ecx
40a838:	e8 23 ff ff ff       	call   0x40a760
40a83d:	5a                   	pop    %edx
40a83e:	8b 4b 18             	mov    0x18(%ebx),%ecx
40a841:	e3 08                	jecxz  0x40a84b
40a843:	39 91 98 00 00 00    	cmp    %edx,0x98(%ecx)
40a849:	74 21                	je     0x40a86c
40a84b:	81 7b 41 88 c3 40 00 	cmpl   $0x40c388,0x41(%ebx)
40a852:	75 0b                	jne    0x40a85f
40a854:	52                   	push   %edx
40a855:	ff 71 1c             	push   0x1c(%ecx)
40a858:	e8 9b a2 ff ff       	call   0x404af8
40a85d:	eb 0d                	jmp    0x40a86c
40a85f:	66 83 7b 49 00       	cmpw   $0x0,0x49(%ebx)
40a864:	75 06                	jne    0x40a86c
40a866:	52                   	push   %edx
40a867:	e8 8c a0 ff ff       	call   0x4048f8
40a86c:	31 c9                	xor    %ecx,%ecx
40a86e:	89 4b 1c             	mov    %ecx,0x1c(%ebx)
40a871:	88 4b 49             	mov    %cl,0x49(%ebx)
40a874:	80 63 28 fe          	andb   $0xfe,0x28(%ebx)
40a878:	85 f6                	test   %esi,%esi
40a87a:	74 11                	je     0x40a88d
40a87c:	80 4b 28 01          	orb    $0x1,0x28(%ebx)
40a880:	89 73 1c             	mov    %esi,0x1c(%ebx)
40a883:	8d 53 20             	lea    0x20(%ebx),%edx
40a886:	89 d8                	mov    %ebx,%eax
40a888:	e8 03 00 00 00       	call   0x40a890
40a88d:	5e                   	pop    %esi
40a88e:	5b                   	pop    %ebx
40a88f:	c3                   	ret
40a890:	8b 4a 04             	mov    0x4(%edx),%ecx
40a893:	8b 12                	mov    (%edx),%edx
40a895:	89 50 20             	mov    %edx,0x20(%eax)
40a898:	89 48 24             	mov    %ecx,0x24(%eax)