4036c4:	bb ff ff ff 7f       	mov    $0x7fffffff,%ebx
4036c9:	53                   	push   %ebx
4036ca:	50                   	push   %eax
4036cb:	56                   	push   %esi
4036cc:	57                   	push   %edi
4036cd:	e8 a0 00 00 00       	call   0x403772
4036d2:	85 c0                	test   %eax,%eax
4036d4:	78 15                	js     0x4036eb
4036d6:	8b 45 fc             	mov    -0x4(%ebp),%eax
4036d9:	2b f0                	sub    %eax,%esi
4036db:	53                   	push   %ebx
4036dc:	ff 75 10             	push   0x10(%ebp)
4036df:	6a 00                	push   $0x0
4036e1:	56                   	push   %esi
4036e2:	8d 04 47             	lea    (%edi,%eax,2),%eax
4036e5:	50                   	push   %eax
4036e6:	e8 c3 c3 01 00       	call   0x41faae
4036eb:	5f                   	pop    %edi
4036ec:	5e                   	pop    %esi
4036ed:	5b                   	pop    %ebx
4036ee:	8b e5                	mov    %ebp,%esp
4036f0:	5d                   	pop    %ebp
4036f1:	c2 0c 00             	ret    $0xc
4036f4:	55                   	push   %ebp
4036f5:	8b ec                	mov    %esp,%ebp
4036f7:	8b 4d 0c             	mov    0xc(%ebp),%ecx
4036fa:	33 c0                	xor    %eax,%eax
4036fc:	85 c9                	test   %ecx,%ecx
4036fe:	74 08                	je     0x403708
403700:	81 f9 ff ff ff 7f    	cmp    $0x7fffffff,%ecx
403706:	76 05                	jbe    0x40370d
403708:	b8 57 00 07 80       	mov    $0x80070057,%eax
40370d:	85 c0                	test   %eax,%eax
40370f:	78 12                	js     0x403723
403711:	8d 45 14             	lea    0x14(%ebp),%eax
403714:	50                   	push   %eax
403715:	ff 75 10             	push   0x10(%ebp)
403718:	6a 00                	push   $0x0
40371a:	51                   	push   %ecx
40371b:	ff 75 08             	push   0x8(%ebp)
40371e:	e8 02 00 00 00       	call   0x403725
403723:	5d                   	pop    %ebp
403724:	c3                   	ret
403725:	55                   	push   %ebp
403726:	8b ec                	mov    %esp,%ebp
403728:	53                   	push   %ebx
403729:	56                   	push   %esi
40372a:	8b 75 0c             	mov    0xc(%ebp),%esi
40372d:	33 db                	xor    %ebx,%ebx
40372f:	57                   	push   %edi
403730:	ff 75 18             	push   0x18(%ebp)
403733:	8b 7d 08             	mov    0x8(%ebp),%edi
403736:	4e                   	dec    %esi
403737:	53                   	push   %ebx
403738:	ff 75 14             	push   0x14(%ebp)
40373b:	56                   	push   %esi
40373c:	57                   	push   %edi
40373d:	e8 88 f3 ff ff       	call   0x402aca
403742:	83 c4 14             	add    $0x14,%esp
403745:	85 c0                	test   %eax,%eax
403747:	78 0f                	js     0x403758
403749:	3b c6                	cmp    %esi,%eax
40374b:	77 0b                	ja     0x403758
40374d:	75 05                	jne    0x403754
40374f:	88 1c 3e             	mov    %bl,(%esi,%edi,1)
403752:	eb 0c                	jmp    0x403760
403754:	8b f0                	mov    %eax,%esi
403756:	eb 08                	jmp    0x403760
403758:	88 1c 3e             	mov    %bl,(%esi,%edi,1)
40375b:	bb 7a 00 07 80       	mov    $0x8007007a,%ebx
403760:	8b 45 10             	mov    0x10(%ebp),%eax
403763:	85 c0                	test   %eax,%eax
403765:	74 02                	je     0x403769
403767:	89 30                	mov    %esi,(%eax)
403769:	5f                   	pop    %edi
40376a:	5e                   	pop    %esi
40376b:	8b c3                	mov    %ebx,%eax
40376d:	5b                   	pop    %ebx
40376e:	5d                   	pop    %ebp
40376f:	c2 14 00             	ret    $0x14
403772:	55                   	push   %ebp
403773:	8b ec                	mov    %esp,%ebp
403775:	8b 45 0c             	mov    0xc(%ebp),%eax
403778:	56                   	push   %esi
403779:	57                   	push   %edi
40377a:	33 ff                	xor    %edi,%edi
40377c:	be 57 00 07 80       	mov    $0x80070057,%esi
403781:	8b d7                	mov    %edi,%edx
403783:	85 c0                	test   %eax,%eax
403785:	74 05                	je     0x40378c
403787:	3b 45 14             	cmp    0x14(%ebp),%eax
40378a:	76 02                	jbe    0x40378e
40378c:	8b d6                	mov    %esi,%edx
40378e:	85 d2                	test   %edx,%edx
403790:	78 34                	js     0x4037c6
403792:	8b 55 08             	mov    0x8(%ebp),%edx
403795:	8b c8                	mov    %eax,%ecx
403797:	85 c0                	test   %eax,%eax
403799:	74 0d                	je     0x4037a8
40379b:	66 39 3a             	cmp    %di,(%edx)
40379e:	74 08                	je     0x4037a8
4037a0:	83 c2 02             	add    $0x2,%edx
4037a3:	83 e9 01             	sub    $0x1,%ecx
4037a6:	75 f3                	jne    0x40379b
4037a8:	8b d6                	mov    %esi,%edx
4037aa:	33 f6                	xor    %esi,%esi
4037ac:	85 c9                	test   %ecx,%ecx
4037ae:	0f 45 d6             	cmovne %esi,%edx
4037b1:	8b 75 10             	mov    0x10(%ebp),%esi
4037b4:	85 f6                	test   %esi,%esi
4037b6:	74 13                	je     0x4037cb
4037b8:	85 c9                	test   %ecx,%ecx
4037ba:	74 06                	je     0x4037c2
4037bc:	2b c1                	sub    %ecx,%eax
4037be:	89 06                	mov    %eax,(%esi)
4037c0:	eb 09                	jmp    0x4037cb
4037c2:	89 3e                	mov    %edi,(%esi)
4037c4:	eb 05                	jmp    0x4037cb
4037c6:	8b 4d 10             	mov    0x10(%ebp),%ecx
4037c9:	89 39                	mov    %edi,(%ecx)
4037cb:	5f                   	pop    %edi
4037cc:	8b c2                	mov    %edx,%eax
4037ce:	5e                   	pop    %esi
4037cf:	5d                   	pop    %ebp
4037d0:	c2 10 00             	ret    $0x10
4037d3:	c2 0c 00             	ret    $0xc
4037d6:	55                   	push   %ebp
4037d7:	8b ec                	mov    %esp,%ebp
4037d9:	6a 00                	push   $0x0
4037db:	ff 75 0c             	push   0xc(%ebp)
4037de:	ff 75 08             	push   0x8(%ebp)
4037e1:	e8 04 00 00 00       	call   0x4037ea
4037e6:	5d                   	pop    %ebp
4037e7:	c2 08 00             	ret    $0x8
4037ea:	55                   	push   %ebp
4037eb:	8b ec                	mov    %esp,%ebp
4037ed:	81 ec 0c 02 00 00    	sub    $0x20c,%esp
4037f3:	a1 08 a0 46 00       	mov    0x46a008,%eax
4037f8:	33 c5                	xor    %ebp,%eax
4037fa:	89 45 fc             	mov    %eax,-0x4(%ebp)
4037fd:	53                   	push   %ebx
4037fe:	8b 5d 0c             	mov    0xc(%ebp),%ebx
403801:	8d 85 f4 fd ff ff    	lea    -0x20c(%ebp),%eax
403807:	56                   	push   %esi
403808:	57                   	push   %edi
403809:	8b 7d 10             	mov    0x10(%ebp),%edi
40380c:	68 08 02 00 00       	push   $0x208
403811:	6a 00                	push   $0x0
403813:	50                   	push   %eax
403814:	e8 57 be 02 00       	call   0x42f670
403819:	83 c4 0c             	add    $0xc,%esp
40381c:	8d 85 f4 fd ff ff    	lea    -0x20c(%ebp),%eax
403822:	be 04 01 00 00       	mov    $0x104,%esi
403827:	56                   	push   %esi
403828:	50                   	push   %eax
403829:	ff 15 3c b1 44 00    	call   *0x44b13c
40382f:	85 c0                	test   %eax,%eax
403831:	75 1f                	jne    0x403852
403833:	ff 15 e8 b0 44 00    	call   *0x44b0e8
403839:	0f b7 f0             	movzwl %ax,%esi
40383c:	81 ce 00 00 07 80    	or     $0x80070000,%esi
403842:	85 c0                	test   %eax,%eax
403844:	0f 4e f0             	cmovle %eax,%esi
403847:	85 f6                	test   %esi,%esi
403849:	78 74                	js     0x4038bf
40384b:	be 05 40 00 80       	mov    $0x80004005,%esi
403850:	eb 6d                	jmp    0x4038bf
403852:	6a 5c                	push   $0x5c
403854:	59                   	pop    %ecx
403855:	66 3b 8c 45 f2 fd ff 	cmp    -0x20e(%ebp,%eax,2),%cx
40385c:	ff
40385d:	74 1f                	je     0x40387e
40385f:	6a 01                	push   $0x1
403861:	68 90 b7 44 00       	push   $0x44b790
403866:	56                   	push   %esi
403867:	8d 85 f4 fd ff ff    	lea    -0x20c(%ebp),%eax
40386d:	50                   	push   %eax
40386e:	e8 f2 fd ff ff       	call   0x403665
403873:	8b f0                	mov    %eax,%esi
403875:	85 f6                	test   %esi,%esi
403877:	78 46                	js     0x4038bf
403879:	be 04 01 00 00       	mov    $0x104,%esi
40387e:	ff 75 08             	push   0x8(%ebp)
403881:	8d 85 f4 fd ff ff    	lea    -0x20c(%ebp),%eax
403887:	56                   	push   %esi
403888:	50                   	push   %eax
403889:	e8 26 fe ff ff       	call   0x4036b4
40388e:	8b f0                	mov    %eax,%esi
403890:	85 f6                	test   %esi,%esi
403892:	78 2b                	js     0x4038bf
403894:	8d 85 f4 fd ff ff    	lea    -0x20c(%ebp),%eax
40389a:	50                   	push   %eax
40389b:	ff 15 38 b1 44 00    	call   *0x44b138
4038a1:	89 03                	mov    %eax,(%ebx)
4038a3:	85 c0                	test   %eax,%eax
4038a5:	74 8c                	je     0x403833
4038a7:	85 ff                	test   %edi,%edi
4038a9:	74 14                	je     0x4038bf
4038ab:	68 04 01 00 00       	push   $0x104
4038b0:	8d 85 f4 fd ff ff    	lea    -0x20c(%ebp),%eax
4038b6:	50                   	push   %eax
4038b7:	57                   	push   %edi
4038b8:	e8 e8 e8 ff ff       	call   0x4021a5
4038bd:	8b f0                	mov    %eax,%esi
4038bf:	8b 4d fc             	mov    -0x4(%ebp),%ecx
4038c2:	8b c6                	mov    %esi,%eax
4038c4:	5f                   	pop    %edi
4038c5:	5e                   	pop    %esi
4038c6:	33 cd                	xor    %ebp,%ecx
4038c8:	5b                   	pop    %ebx
4038c9:	e8 68 a5 02 00       	call   0x42de36
4038ce:	8b e5                	mov    %ebp,%esp
4038d0:	5d                   	pop    %ebp
4038d1:	c2 0c 00             	ret    $0xc
4038d4:	55                   	push   %ebp
4038d5:	8b ec                	mov    %esp,%ebp
4038d7:	8b 45 0c             	mov    0xc(%ebp),%eax
4038da:	ff 75 08             	push   0x8(%ebp)
4038dd:	f7 d8                	neg    %eax
4038df:	1b c0                	sbb    %eax,%eax
4038e1:	83 e0 08             	and    $0x8,%eax
4038e4:	50                   	push   %eax
4038e5:	ff 15 54 b1 44 00    	call   *0x44b154
4038eb:	50                   	push   %eax
4038ec:	ff 15 44 b1 44 00    	call   *0x44b144
4038f2:	5d                   	pop    %ebp
4038f3:	c2 08 00             	ret    $0x8
4038f6:	55                   	push   %ebp
4038f7:	8b ec                	mov    %esp,%ebp
4038f9:	51                   	push   %ecx
4038fa:	8b 4d 14             	mov    0x14(%ebp),%ecx
4038fd:	83 c8 ff             	or     $0xffffffff,%eax
403900:	83 65 fc 00          	andl   $0x0,-0x4(%ebp)
403904:	56                   	push   %esi
403905:	57                   	push   %edi
403906:	8b 7d 0c             	mov    0xc(%ebp),%edi
403909:	03 cf                	add    %edi,%ecx
40390b:	3b cf                	cmp    %edi,%ecx
40390d:	0f 43 c1             	cmovae %ecx,%eax
403910:	1b f6                	sbb    %esi,%esi
403912:	81 e6 16 02 07 80    	and    $0x80070216,%esi
403918:	3b cf                	cmp    %edi,%ecx
40391a:	72 73                	jb     0x40398f
40391c:	f7 65 10             	mull   0x10(%ebp)
40391f:	8d 4d fc             	lea    -0x4(%ebp),%ecx
403922:	51                   	push   %ecx
403923:	52                   	push   %edx
403924:	50                   	push   %eax
403925:	e8 04 35 00 00       	call   0x406e2e
40392a:	8b f0                	mov    %eax,%esi
40392c:	85 f6                	test   %esi,%esi
40392e:	78 5f                	js     0x40398f
403930:	53                   	push   %ebx
403931:	8b 5d 08             	mov    0x8(%ebp),%ebx
403934:	83 3b 00             	cmpl   $0x0,(%ebx)
403937:	74 2c                	je     0x403965
403939:	ff 33                	push   (%ebx)
40393b:	e8 11 02 00 00       	call   0x403b51
403940:	0f af 7d 10          	imul   0x10(%ebp),%edi
403944:	3b c7                	cmp    %edi,%eax
403946:	73 46                	jae    0x40398e
403948:	6a 01                	push   $0x1
40394a:	ff 75 fc             	push   -0x4(%ebp)
40394d:	ff 33                	push   (%ebx)
40394f:	e8 1e 01 00 00       	call   0x403a72
403954:	85 c0                	test   %eax,%eax
403956:	75 34                	jne    0x40398c
403958:	b8 0e 00 07 80       	mov    $0x8007000e,%eax
40395d:	50                   	push   %eax
40395e:	68 86 00 00 00       	push   $0x86
403963:	eb 19                	jmp    0x40397e
403965:	6a 01                	push   $0x1
403967:	ff 75 fc             	push   -0x4(%ebp)
40396a:	e8 65 ff ff ff       	call   0x4038d4
40396f:	85 c0                	test   %eax,%eax
403971:	75 19                	jne    0x40398c
403973:	b8 0e 00 07 80       	mov    $0x8007000e,%eax
403978:	50                   	push   %eax
403979:	68 8e 00 00 00       	push   $0x8e
40397e:	68 18 b8 44 00       	push   $0x44b818
403983:	8b f0                	mov    %eax,%esi
403985:	e8 49 fe ff ff       	call   0x4037d3
40398a:	eb 02                	jmp    0x40398e
40398c:	89 03                	mov    %eax,(%ebx)
40398e:	5b                   	pop    %ebx
40398f:	5f                   	pop    %edi
403990:	8b c6                	mov    %esi,%eax
403992:	5e                   	pop    %esi
403993:	8b e5                	mov    %ebp,%esp
403995:	5d                   	pop    %ebp
403996:	c2 10 00             	ret    $0x10
403999:	55                   	push   %ebp
40399a:	8b ec                	mov    %esp,%ebp
40399c:	56                   	push   %esi
40399d:	ff 75 08             	push   0x8(%ebp)
4039a0:	33 f6                	xor    %esi,%esi
4039a2:	56                   	push   %esi
4039a3:	ff 15 54 b1 44 00    	call   *0x44b154
4039a9:	50                   	push   %eax
4039aa:	ff 15 4c b1 44 00    	call   *0x44b14c
4039b0:	85 c0                	test   %eax,%eax
4039b2:	75 14                	jne    0x4039c8
4039b4:	ff 15 e8 b0 44 00    	call   *0x44b0e8
4039ba:	0f b7 f0             	movzwl %ax,%esi
4039bd:	81 ce 00 00 07 80    	or     $0x80070000,%esi
4039c3:	85 c0                	test   %eax,%eax
4039c5:	0f 4e f0             	cmovle %eax,%esi
4039c8:	8b c6                	mov    %esi,%eax
4039ca:	5e                   	pop    %esi
4039cb:	5d                   	pop    %ebp
4039cc:	c2 04 00             	ret    $0x4
4039cf:	55                   	push   %ebp
4039d0:	8b ec                	mov    %esp,%ebp
4039d2:	51                   	push   %ecx
4039d3:	57                   	push   %edi
4039d4:	8b 7d 10             	mov    0x10(%ebp),%edi
4039d7:	85 ff                	test   %edi,%edi
4039d9:	75 07                	jne    0x4039e2
4039db:	33 c0                	xor    %eax,%eax
4039dd:	e9 89 00 00 00       	jmp    0x403a6b
4039e2:	53                   	push   %ebx
4039e3:	8b 5d 14             	mov    0x14(%ebp),%ebx
4039e6:	56                   	push   %esi
4039e7:	ff 75 1c             	push   0x1c(%ebp)
4039ea:	8b 75 18             	mov    0x18(%ebp),%esi
4039ed:	03 df                	add    %edi,%ebx
4039ef:	56                   	push   %esi
4039f0:	53                   	push   %ebx
4039f1:	ff 75 08             	push   0x8(%ebp)
4039f4:	e8 fd fe ff ff       	call   0x4038f6
4039f9:	89 45 fc             	mov    %eax,-0x4(%ebp)
4039fc:	85 c0                	test   %eax,%eax
4039fe:	78 69                	js     0x403a69
403a00:	8b 45 08             	mov    0x8(%ebp),%eax
403a03:	8b 10                	mov    (%eax),%edx
403a05:	8d 43 ff             	lea    -0x1(%ebx),%eax
403a08:	8b 5d 0c             	mov    0xc(%ebp),%ebx
403a0b:	89 55 18             	mov    %edx,0x18(%ebp)
403a0e:	3b c3                	cmp    %ebx,%eax
403a10:	76 40                	jbe    0x403a52
403a12:	8b c8                	mov    %eax,%ecx
403a14:	0f af ce             	imul   %esi,%ecx
403a17:	03 ca                	add    %edx,%ecx
403a19:	89 4d 1c             	mov    %ecx,0x1c(%ebp)
403a1c:	8d 48 ff             	lea    -0x1(%eax),%ecx
403a1f:	0f af ce             	imul   %esi,%ecx
403a22:	03 ca                	add    %edx,%ecx
403a24:	2b c3                	sub    %ebx,%eax
403a26:	8b 5d 1c             	mov    0x1c(%ebp),%ebx
403a29:	8b f8                	mov    %eax,%edi