408607:	ff 74 24 14          	push   0x14(%esp)
40860b:	e8 bd 74 00 00       	call   0x40facd
408610:	83 c4 10             	add    $0x10,%esp
408613:	5e                   	pop    %esi
408614:	c3                   	ret
408615:	53                   	push   %ebx
408616:	56                   	push   %esi
408617:	8b 74 24 0c          	mov    0xc(%esp),%esi
40861b:	57                   	push   %edi
40861c:	33 ff                	xor    %edi,%edi
40861e:	83 cb ff             	or     $0xffffffff,%ebx
408621:	3b f7                	cmp    %edi,%esi
408623:	75 1d                	jne    0x408642
408625:	e8 d0 0d 00 00       	call   0x4093fa
40862a:	57                   	push   %edi
40862b:	57                   	push   %edi
40862c:	57                   	push   %edi
40862d:	57                   	push   %edi
40862e:	57                   	push   %edi
40862f:	c7 00 16 00 00 00    	movl   $0x16,(%eax)
408635:	e8 16 f0 ff ff       	call   0x407650
40863a:	83 c4 14             	add    $0x14,%esp
40863d:	83 c8 ff             	or     $0xffffffff,%eax
408640:	eb 42                	jmp    0x408684
408642:	f6 46 0c 83          	testb  $0x83,0xc(%esi)
408646:	74 37                	je     0x40867f
408648:	56                   	push   %esi
408649:	e8 c8 f6 ff ff       	call   0x407d16
40864e:	56                   	push   %esi
40864f:	8b d8                	mov    %eax,%ebx
408651:	e8 ce 6e 00 00       	call   0x40f524
408656:	56                   	push   %esi
408657:	e8 ea 63 00 00       	call   0x40ea46
40865c:	50                   	push   %eax
40865d:	e8 4e 75 00 00       	call   0x40fbb0
408662:	83 c4 10             	add    $0x10,%esp
408665:	85 c0                	test   %eax,%eax
408667:	7d 05                	jge    0x40866e
408669:	83 cb ff             	or     $0xffffffff,%ebx
40866c:	eb 11                	jmp    0x40867f
40866e:	8b 46 1c             	mov    0x1c(%esi),%eax
408671:	3b c7                	cmp    %edi,%eax
408673:	74 0a                	je     0x40867f
408675:	50                   	push   %eax
408676:	e8 d8 dd ff ff       	call   0x406453
40867b:	59                   	pop    %ecx
40867c:	89 7e 1c             	mov    %edi,0x1c(%esi)
40867f:	89 7e 0c             	mov    %edi,0xc(%esi)
408682:	8b c3                	mov    %ebx,%eax
408684:	5f                   	pop    %edi
408685:	5e                   	pop    %esi
408686:	5b                   	pop    %ebx
408687:	c3                   	ret
408688:	6a 0c                	push   $0xc
40868a:	68 18 ab 41 00       	push   $0x41ab18
40868f:	e8 b4 4f 00 00       	call   0x40d648
408694:	83 4d e4 ff          	orl    $0xffffffff,-0x1c(%ebp)
408698:	33 c0                	xor    %eax,%eax
40869a:	8b 75 08             	mov    0x8(%ebp),%esi
40869d:	33 ff                	xor    %edi,%edi
40869f:	3b f7                	cmp    %edi,%esi
4086a1:	0f 95 c0             	setne  %al
4086a4:	3b c7                	cmp    %edi,%eax
4086a6:	75 1d                	jne    0x4086c5
4086a8:	e8 4d 0d 00 00       	call   0x4093fa
4086ad:	c7 00 16 00 00 00    	movl   $0x16,(%eax)
4086b3:	57                   	push   %edi
4086b4:	57                   	push   %edi
4086b5:	57                   	push   %edi
4086b6:	57                   	push   %edi
4086b7:	57                   	push   %edi
4086b8:	e8 93 ef ff ff       	call   0x407650
4086bd:	83 c4 14             	add    $0x14,%esp
4086c0:	83 c8 ff             	or     $0xffffffff,%eax
4086c3:	eb 0c                	jmp    0x4086d1
4086c5:	f6 46 0c 40          	testb  $0x40,0xc(%esi)
4086c9:	74 0c                	je     0x4086d7
4086cb:	89 7e 0c             	mov    %edi,0xc(%esi)
4086ce:	8b 45 e4             	mov    -0x1c(%ebp),%eax
4086d1:	e8 b7 4f 00 00       	call   0x40d68d
4086d6:	c3                   	ret
4086d7:	56                   	push   %esi
4086d8:	e8 28 02 00 00       	call   0x408905
4086dd:	59                   	pop    %ecx
4086de:	89 7d fc             	mov    %edi,-0x4(%ebp)
4086e1:	56                   	push   %esi
4086e2:	e8 2e ff ff ff       	call   0x408615
4086e7:	59                   	pop    %ecx
4086e8:	89 45 e4             	mov    %eax,-0x1c(%ebp)
4086eb:	c7 45 fc fe ff ff ff 	movl   $0xfffffffe,-0x4(%ebp)
4086f2:	e8 05 00 00 00       	call   0x4086fc
4086f7:	eb d5                	jmp    0x4086ce
4086f9:	8b 75 08             	mov    0x8(%ebp),%esi
4086fc:	56                   	push   %esi
4086fd:	e8 55 02 00 00       	call   0x408957
408702:	59                   	pop    %ecx
408703:	c3                   	ret
408704:	51                   	push   %ecx
408705:	53                   	push   %ebx
408706:	55                   	push   %ebp
408707:	56                   	push   %esi
408708:	57                   	push   %edi
408709:	ff 35 c8 e5 41 00    	push   0x41e5c8
40870f:	e8 2e 3c 00 00       	call   0x40c342
408714:	ff 35 c4 e5 41 00    	push   0x41e5c4
40871a:	8b f0                	mov    %eax,%esi
40871c:	89 74 24 18          	mov    %esi,0x18(%esp)
408720:	e8 1d 3c 00 00       	call   0x40c342
408725:	8b f8                	mov    %eax,%edi
408727:	3b fe                	cmp    %esi,%edi
408729:	59                   	pop    %ecx
40872a:	59                   	pop    %ecx
40872b:	72 7c                	jb     0x4087a9
40872d:	8b df                	mov    %edi,%ebx
40872f:	2b de                	sub    %esi,%ebx
408731:	8d 6b 04             	lea    0x4(%ebx),%ebp
408734:	83 fd 04             	cmp    $0x4,%ebp
408737:	72 70                	jb     0x4087a9
408739:	56                   	push   %esi
40873a:	e8 3e 75 00 00       	call   0x40fc7d
40873f:	8b f0                	mov    %eax,%esi
408741:	3b f5                	cmp    %ebp,%esi
408743:	59                   	pop    %ecx
408744:	73 4a                	jae    0x408790
408746:	b8 00 08 00 00       	mov    $0x800,%eax
40874b:	3b f0                	cmp    %eax,%esi
40874d:	73 02                	jae    0x408751
40874f:	8b c6                	mov    %esi,%eax
408751:	03 c6                	add    %esi,%eax
408753:	3b c6                	cmp    %esi,%eax
408755:	72 10                	jb     0x408767
408757:	50                   	push   %eax
408758:	ff 74 24 14          	push   0x14(%esp)
40875c:	e8 13 0c 00 00       	call   0x409374
408761:	85 c0                	test   %eax,%eax
408763:	59                   	pop    %ecx
408764:	59                   	pop    %ecx
408765:	75 17                	jne    0x40877e
408767:	8d 46 10             	lea    0x10(%esi),%eax
40876a:	3b c6                	cmp    %esi,%eax
40876c:	72 3b                	jb     0x4087a9
40876e:	50                   	push   %eax
40876f:	ff 74 24 14          	push   0x14(%esp)
408773:	e8 fc 0b 00 00       	call   0x409374
408778:	85 c0                	test   %eax,%eax
40877a:	59                   	pop    %ecx
40877b:	59                   	pop    %ecx
40877c:	74 2b                	je     0x4087a9
40877e:	c1 fb 02             	sar    $0x2,%ebx
408781:	50                   	push   %eax
408782:	8d 3c 98             	lea    (%eax,%ebx,4),%edi
408785:	e8 4c 3b 00 00       	call   0x40c2d6
40878a:	59                   	pop    %ecx
40878b:	a3 c8 e5 41 00       	mov    %eax,0x41e5c8
408790:	8b 74 24 18          	mov    0x18(%esp),%esi
408794:	89 37                	mov    %esi,(%edi)
408796:	83 c7 04             	add    $0x4,%edi
408799:	57                   	push   %edi
40879a:	e8 37 3b 00 00       	call   0x40c2d6
40879f:	a3 c4 e5 41 00       	mov    %eax,0x41e5c4
4087a4:	59                   	pop    %ecx
4087a5:	8b c6                	mov    %esi,%eax
4087a7:	eb 02                	jmp    0x4087ab
4087a9:	33 c0                	xor    %eax,%eax
4087ab:	5f                   	pop    %edi
4087ac:	5e                   	pop    %esi
4087ad:	5d                   	pop    %ebp
4087ae:	5b                   	pop    %ebx
4087af:	59                   	pop    %ecx
4087b0:	c3                   	ret
4087b1:	56                   	push   %esi
4087b2:	6a 04                	push   $0x4
4087b4:	6a 20                	push   $0x20
4087b6:	e8 71 0b 00 00       	call   0x40932c
4087bb:	8b f0                	mov    %eax,%esi
4087bd:	56                   	push   %esi
4087be:	e8 13 3b 00 00       	call   0x40c2d6
4087c3:	83 c4 0c             	add    $0xc,%esp
4087c6:	85 f6                	test   %esi,%esi
4087c8:	a3 c8 e5 41 00       	mov    %eax,0x41e5c8
4087cd:	a3 c4 e5 41 00       	mov    %eax,0x41e5c4
4087d2:	75 05                	jne    0x4087d9
4087d4:	6a 18                	push   $0x18
4087d6:	58                   	pop    %eax
4087d7:	5e                   	pop    %esi
4087d8:	c3                   	ret
4087d9:	83 26 00             	andl   $0x0,(%esi)
4087dc:	33 c0                	xor    %eax,%eax
4087de:	5e                   	pop    %esi
4087df:	c3                   	ret
4087e0:	6a 0c                	push   $0xc
4087e2:	68 38 ab 41 00       	push   $0x41ab38
4087e7:	e8 5c 4e 00 00       	call   0x40d648
4087ec:	e8 b4 50 00 00       	call   0x40d8a5
4087f1:	83 65 fc 00          	andl   $0x0,-0x4(%ebp)
4087f5:	ff 75 08             	push   0x8(%ebp)
4087f8:	e8 07 ff ff ff       	call   0x408704
4087fd:	59                   	pop    %ecx
4087fe:	89 45 e4             	mov    %eax,-0x1c(%ebp)
408801:	c7 45 fc fe ff ff ff 	movl   $0xfffffffe,-0x4(%ebp)
408808:	e8 09 00 00 00       	call   0x408816
40880d:	8b 45 e4             	mov    -0x1c(%ebp),%eax
408810:	e8 78 4e 00 00       	call   0x40d68d
408815:	c3                   	ret
408816:	e8 93 50 00 00       	call   0x40d8ae
40881b:	c3                   	ret
40881c:	ff 74 24 04          	push   0x4(%esp)
408820:	e8 bb ff ff ff       	call   0x4087e0
408825:	f7 d8                	neg    %eax
408827:	1b c0                	sbb    %eax,%eax
408829:	f7 d8                	neg    %eax
40882b:	59                   	pop    %ecx
40882c:	48                   	dec    %eax
40882d:	c3                   	ret
40882e:	b8 68 c5 41 00       	mov    $0x41c568,%eax
408833:	c3                   	ret
408834:	a1 00 f6 41 00       	mov    0x41f600,%eax
408839:	85 c0                	test   %eax,%eax
40883b:	56                   	push   %esi
40883c:	6a 14                	push   $0x14
40883e:	5e                   	pop    %esi
40883f:	75 07                	jne    0x408848
408841:	b8 00 02 00 00       	mov    $0x200,%eax
408846:	eb 06                	jmp    0x40884e
408848:	3b c6                	cmp    %esi,%eax
40884a:	7d 07                	jge    0x408853
40884c:	8b c6                	mov    %esi,%eax
40884e:	a3 00 f6 41 00       	mov    %eax,0x41f600
408853:	6a 04                	push   $0x4
408855:	50                   	push   %eax
408856:	e8 d1 0a 00 00       	call   0x40932c
40885b:	85 c0                	test   %eax,%eax
40885d:	59                   	pop    %ecx
40885e:	59                   	pop    %ecx
40885f:	a3 fc e5 41 00       	mov    %eax,0x41e5fc
408864:	75 1e                	jne    0x408884
408866:	6a 04                	push   $0x4
408868:	56                   	push   %esi
408869:	89 35 00 f6 41 00    	mov    %esi,0x41f600
40886f:	e8 b8 0a 00 00       	call   0x40932c
408874:	85 c0                	test   %eax,%eax
408876:	59                   	pop    %ecx
408877:	59                   	pop    %ecx
408878:	a3 fc e5 41 00       	mov    %eax,0x41e5fc
40887d:	75 05                	jne    0x408884
40887f:	6a 1a                	push   $0x1a
408881:	58                   	pop    %eax
408882:	5e                   	pop    %esi
408883:	c3                   	ret
408884:	33 d2                	xor    %edx,%edx
408886:	b9 68 c5 41 00       	mov    $0x41c568,%ecx
40888b:	eb 05                	jmp    0x408892
40888d:	a1 fc e5 41 00       	mov    0x41e5fc,%eax
408892:	89 0c 02             	mov    %ecx,(%edx,%eax,1)
408895:	83 c1 20             	add    $0x20,%ecx
408898:	83 c2 04             	add    $0x4,%edx
40889b:	81 f9 e8 c7 41 00    	cmp    $0x41c7e8,%ecx
4088a1:	7c ea                	jl     0x40888d
4088a3:	6a fe                	push   $0xfffffffe
4088a5:	5e                   	pop    %esi
4088a6:	33 d2                	xor    %edx,%edx
4088a8:	b9 78 c5 41 00       	mov    $0x41c578,%ecx
4088ad:	57                   	push   %edi
4088ae:	8b fa                	mov    %edx,%edi
4088b0:	83 e7 1f             	and    $0x1f,%edi
4088b3:	6b ff 28             	imul   $0x28,%edi,%edi
4088b6:	8b c2                	mov    %edx,%eax
4088b8:	c1 f8 05             	sar    $0x5,%eax
4088bb:	8b 04 85 c0 e4 41 00 	mov    0x41e4c0(,%eax,4),%eax
4088c2:	8b 04 07             	mov    (%edi,%eax,1),%eax
4088c5:	83 f8 ff             	cmp    $0xffffffff,%eax
4088c8:	74 08                	je     0x4088d2
4088ca:	3b c6                	cmp    %esi,%eax
4088cc:	74 04                	je     0x4088d2
4088ce:	85 c0                	test   %eax,%eax
4088d0:	75 02                	jne    0x4088d4
4088d2:	89 31                	mov    %esi,(%ecx)
4088d4:	83 c1 20             	add    $0x20,%ecx
4088d7:	42                   	inc    %edx
4088d8:	81 f9 d8 c5 41 00    	cmp    $0x41c5d8,%ecx
4088de:	7c ce                	jl     0x4088ae
4088e0:	5f                   	pop    %edi
4088e1:	33 c0                	xor    %eax,%eax
4088e3:	5e                   	pop    %esi
4088e4:	c3                   	ret
4088e5:	e8 fd f5 ff ff       	call   0x407ee7
4088ea:	80 3d f0 de 41 00 00 	cmpb   $0x0,0x41def0
4088f1:	74 05                	je     0x4088f8
4088f3:	e8 28 74 00 00       	call   0x40fd20
4088f8:	ff 35 fc e5 41 00    	push   0x41e5fc
4088fe:	e8 50 db ff ff       	call   0x406453
408903:	59                   	pop    %ecx
408904:	c3                   	ret
408905:	8b 44 24 04          	mov    0x4(%esp),%eax
408909:	b9 68 c5 41 00       	mov    $0x41c568,%ecx
40890e:	3b c1                	cmp    %ecx,%eax
408910:	72 17                	jb     0x408929
408912:	3d c8 c7 41 00       	cmp    $0x41c7c8,%eax
408917:	77 10                	ja     0x408929
408919:	2b c1                	sub    %ecx,%eax
40891b:	c1 f8 05             	sar    $0x5,%eax
40891e:	83 c0 10             	add    $0x10,%eax
408921:	50                   	push   %eax
408922:	e8 f0 41 00 00       	call   0x40cb17
408927:	59                   	pop    %ecx
408928:	c3                   	ret
408929:	83 c0 20             	add    $0x20,%eax
40892c:	50                   	push   %eax
40892d:	ff 15 88 70 41 00    	call   *0x417088
408933:	c3                   	ret
408934:	8b 44 24 04          	mov    0x4(%esp),%eax
408938:	83 f8 14             	cmp    $0x14,%eax
40893b:	7d 0b                	jge    0x408948
40893d:	83 c0 10             	add    $0x10,%eax
408940:	50                   	push   %eax
408941:	e8 d1 41 00 00       	call   0x40cb17
408946:	59                   	pop    %ecx
408947:	c3                   	ret
408948:	8b 44 24 08          	mov    0x8(%esp),%eax
40894c:	83 c0 20             	add    $0x20,%eax
40894f:	50                   	push   %eax
408950:	ff 15 88 70 41 00    	call   *0x417088
408956:	c3                   	ret
408957:	8b 44 24 04          	mov    0x4(%esp),%eax
40895b:	b9 68 c5 41 00       	mov    $0x41c568,%ecx
408960:	3b c1                	cmp    %ecx,%eax
408962:	72 17                	jb     0x40897b
408964:	3d c8 c7 41 00       	cmp    $0x41c7c8,%eax
408969:	77 10                	ja     0x40897b
40896b:	2b c1                	sub    %ecx,%eax
40896d:	c1 f8 05             	sar    $0x5,%eax
408970:	83 c0 10             	add    $0x10,%eax
408973:	50                   	push   %eax
408974:	e8 c6 40 00 00       	call   0x40ca3f
408979:	59                   	pop    %ecx
40897a:	c3                   	ret
40897b:	83 c0 20             	add    $0x20,%eax
40897e:	50                   	push   %eax
40897f:	ff 15 8c 70 41 00    	call   *0x41708c
408985:	c3                   	ret
408986:	8b 44 24 04          	mov    0x4(%esp),%eax
40898a:	83 f8 14             	cmp    $0x14,%eax
40898d:	7d 0b                	jge    0x40899a
40898f:	83 c0 10             	add    $0x10,%eax
408992:	50                   	push   %eax
408993:	e8 a7 40 00 00       	call   0x40ca3f
408998:	59                   	pop    %ecx
408999:	c3                   	ret
40899a:	8b 44 24 08          	mov    0x8(%esp),%eax
40899e:	83 c0 20             	add    $0x20,%eax