40380d:	59                   	pop    %ecx
40380e:	85 f6                	test   %esi,%esi
403810:	75 e1                	jne    0x4037f3
403812:	a1 e8 63 40 00       	mov    0x4063e8,%eax
403817:	85 c0                	test   %eax,%eax
403819:	74 3c                	je     0x403857
40381b:	80 3d 3c 64 40 00 00 	cmpb   $0x0,0x40643c
403822:	74 33                	je     0x403857
403824:	8b 0d 48 64 40 00    	mov    0x406448,%ecx
40382a:	85 c9                	test   %ecx,%ecx
40382c:	74 22                	je     0x403850
40382e:	8b 04 b1             	mov    (%ecx,%esi,4),%eax
403831:	85 c0                	test   %eax,%eax
403833:	74 0d                	je     0x403842
403835:	50                   	push   %eax
403836:	ff 15 60 70 40 00    	call   *0x407060
40383c:	8b 0d 48 64 40 00    	mov    0x406448,%ecx
403842:	46                   	inc    %esi
403843:	3b 35 44 64 40 00    	cmp    0x406444,%esi
403849:	76 e3                	jbe    0x40382e
40384b:	a1 e8 63 40 00       	mov    0x4063e8,%eax
403850:	50                   	push   %eax
403851:	ff 15 60 70 40 00    	call   *0x407060
403857:	5f                   	pop    %edi
403858:	33 c0                	xor    %eax,%eax
40385a:	5e                   	pop    %esi
40385b:	8b e5                	mov    %ebp,%esp
40385d:	5d                   	pop    %ebp
40385e:	8b e3                	mov    %ebx,%esp
403860:	5b                   	pop    %ebx
403861:	c3                   	ret
403862:	8b ff                	mov    %edi,%edi
403864:	55                   	push   %ebp
403865:	8b ec                	mov    %esp,%ebp
403867:	83 ec 28             	sub    $0x28,%esp
40386a:	a1 54 60 40 00       	mov    0x406054,%eax
40386f:	33 c5                	xor    %ebp,%eax
403871:	89 45 f8             	mov    %eax,-0x8(%ebp)
403874:	53                   	push   %ebx
403875:	56                   	push   %esi
403876:	33 db                	xor    %ebx,%ebx
403878:	89 55 dc             	mov    %edx,-0x24(%ebp)
40387b:	8b f2                	mov    %edx,%esi
40387d:	89 4d e0             	mov    %ecx,-0x20(%ebp)
403880:	8b c3                	mov    %ebx,%eax
403882:	89 45 e4             	mov    %eax,-0x1c(%ebp)
403885:	57                   	push   %edi
403886:	85 f6                	test   %esi,%esi
403888:	74 22                	je     0x4038ac
40388a:	8d 45 e4             	lea    -0x1c(%ebp),%eax
40388d:	50                   	push   %eax
40388e:	68 70 12 40 00       	push   $0x401270
403893:	6a 01                	push   $0x1
403895:	53                   	push   %ebx
403896:	68 50 12 40 00       	push   $0x401250
40389b:	ff 15 08 70 40 00    	call   *0x407008
4038a1:	85 c0                	test   %eax,%eax
4038a3:	0f 89 a4 00 00 00    	jns    0x40394d
4038a9:	8b 45 e4             	mov    -0x1c(%ebp),%eax
4038ac:	8b cb                	mov    %ebx,%ecx
4038ae:	8b d9                	mov    %ecx,%ebx
4038b0:	85 c0                	test   %eax,%eax
4038b2:	74 10                	je     0x4038c4
4038b4:	8b 08                	mov    (%eax),%ecx
4038b6:	50                   	push   %eax
4038b7:	8b 71 08             	mov    0x8(%ecx),%esi
4038ba:	8b ce                	mov    %esi,%ecx
4038bc:	ff 15 d0 71 40 00    	call   *0x4071d0
4038c2:	ff d6                	call   *%esi
4038c4:	8b 4d f8             	mov    -0x8(%ebp),%ecx
4038c7:	8b c3                	mov    %ebx,%eax
4038c9:	5f                   	pop    %edi
4038ca:	5e                   	pop    %esi
4038cb:	33 cd                	xor    %ebp,%ecx
4038cd:	5b                   	pop    %ebx
4038ce:	e8 cd 16 00 00       	call   0x404fa0
4038d3:	c9                   	leave
4038d4:	c2 04 00             	ret    $0x4
4038d7:	8d 7d e8             	lea    -0x18(%ebp),%edi
4038da:	8b 76 04             	mov    0x4(%esi),%esi
4038dd:	8d 4d e8             	lea    -0x18(%ebp),%ecx
4038e0:	51                   	push   %ecx
4038e1:	6a 01                	push   $0x1
4038e3:	ff 75 e0             	push   -0x20(%ebp)
4038e6:	a5                   	movsl  %ds:(%esi),%es:(%edi)
4038e7:	a5                   	movsl  %ds:(%esi),%es:(%edi)
4038e8:	a5                   	movsl  %ds:(%esi),%es:(%edi)
4038e9:	a5                   	movsl  %ds:(%esi),%es:(%edi)
4038ea:	39 5d 08             	cmp    %ebx,0x8(%ebp)
4038ed:	74 30                	je     0x40391f
4038ef:	83 f8 01             	cmp    $0x1,%eax
4038f2:	8b 45 e4             	mov    -0x1c(%ebp),%eax
4038f5:	50                   	push   %eax
4038f6:	8b 30                	mov    (%eax),%esi
4038f8:	75 0e                	jne    0x403908
4038fa:	8b 4e 14             	mov    0x14(%esi),%ecx
4038fd:	ff 15 d0 71 40 00    	call   *0x4071d0
403903:	ff 56 14             	call   *0x14(%esi)
403906:	eb 0c                	jmp    0x403914
403908:	8b 4e 1c             	mov    0x1c(%esi),%ecx
40390b:	ff 15 d0 71 40 00    	call   *0x4071d0
403911:	ff 56 1c             	call   *0x1c(%esi)
403914:	8b c8                	mov    %eax,%ecx
403916:	85 c9                	test   %ecx,%ecx
403918:	79 2a                	jns    0x403944
40391a:	8b 45 e4             	mov    -0x1c(%ebp),%eax
40391d:	eb 8f                	jmp    0x4038ae
40391f:	83 f8 01             	cmp    $0x1,%eax
403922:	8b 45 e4             	mov    -0x1c(%ebp),%eax
403925:	50                   	push   %eax
403926:	8b 30                	mov    (%eax),%esi
403928:	75 0e                	jne    0x403938
40392a:	8b 4e 18             	mov    0x18(%esi),%ecx
40392d:	ff 15 d0 71 40 00    	call   *0x4071d0
403933:	ff 56 18             	call   *0x18(%esi)
403936:	eb 0c                	jmp    0x403944
403938:	8b 4e 20             	mov    0x20(%esi),%ecx
40393b:	ff 15 d0 71 40 00    	call   *0x4071d0
403941:	ff 56 20             	call   *0x20(%esi)
403944:	8b 75 dc             	mov    -0x24(%ebp),%esi
403947:	83 c6 08             	add    $0x8,%esi
40394a:	89 75 dc             	mov    %esi,-0x24(%ebp)
40394d:	8b 06                	mov    (%esi),%eax
40394f:	85 c0                	test   %eax,%eax
403951:	75 84                	jne    0x4038d7
403953:	8b 45 e4             	mov    -0x1c(%ebp),%eax
403956:	e9 55 ff ff ff       	jmp    0x4038b0
40395b:	8b ff                	mov    %edi,%edi
40395d:	53                   	push   %ebx
40395e:	8b dc                	mov    %esp,%ebx
403960:	51                   	push   %ecx
403961:	51                   	push   %ecx
403962:	83 e4 f8             	and    $0xfffffff8,%esp
403965:	83 c4 04             	add    $0x4,%esp
403968:	55                   	push   %ebp
403969:	8b 6b 04             	mov    0x4(%ebx),%ebp
40396c:	89 6c 24 04          	mov    %ebp,0x4(%esp)
403970:	8b ec                	mov    %esp,%ebp
403972:	51                   	push   %ecx
403973:	51                   	push   %ecx
403974:	56                   	push   %esi
403975:	57                   	push   %edi
403976:	8b 3d e0 63 40 00    	mov    0x4063e0,%edi
40397c:	85 ff                	test   %edi,%edi
40397e:	75 07                	jne    0x403987
403980:	33 c0                	xor    %eax,%eax
403982:	e9 89 00 00 00       	jmp    0x403a10
403987:	33 f6                	xor    %esi,%esi
403989:	39 37                	cmp    %esi,(%edi)
40398b:	74 7a                	je     0x403a07
40398d:	8b 47 18             	mov    0x18(%edi),%eax
403990:	89 45 fc             	mov    %eax,-0x4(%ebp)
403993:	85 c0                	test   %eax,%eax
403995:	74 0f                	je     0x4039a6
403997:	8b c8                	mov    %eax,%ecx
403999:	ff 15 d0 71 40 00    	call   *0x4071d0
40399f:	ff 55 fc             	call   *-0x4(%ebp)
4039a2:	85 c0                	test   %eax,%eax
4039a4:	75 41                	jne    0x4039e7
4039a6:	8b 77 04             	mov    0x4(%edi),%esi
4039a9:	8b ce                	mov    %esi,%ecx
4039ab:	6a 01                	push   $0x1
4039ad:	ff 15 d0 71 40 00    	call   *0x4071d0
4039b3:	ff d6                	call   *%esi
4039b5:	8b f0                	mov    %eax,%esi
4039b7:	85 f6                	test   %esi,%esi
4039b9:	78 53                	js     0x403a0e
4039bb:	8b 0d d0 63 40 00    	mov    0x4063d0,%ecx
4039c1:	81 f9 84 00 00 00    	cmp    $0x84,%ecx
4039c7:	75 24                	jne    0x4039ed
4039c9:	8b 77 1c             	mov    0x1c(%edi),%esi
4039cc:	8b ce                	mov    %esi,%ecx
4039ce:	6a 01                	push   $0x1
4039d0:	ff 15 d0 71 40 00    	call   *0x4071d0
4039d6:	ff d6                	call   *%esi
4039d8:	8b 0f                	mov    (%edi),%ecx
4039da:	8b d0                	mov    %eax,%edx
4039dc:	e8 81 fe ff ff       	call   0x403862
4039e1:	8b f0                	mov    %eax,%esi
4039e3:	85 f6                	test   %esi,%esi
4039e5:	78 27                	js     0x403a0e
4039e7:	8b 0d d0 63 40 00    	mov    0x4063d0,%ecx
4039ed:	33 c0                	xor    %eax,%eax
4039ef:	83 f9 64             	cmp    $0x64,%ecx
4039f2:	0f 95 c0             	setne  %al
4039f5:	8d 04 c5 1c 00 00 00 	lea    0x1c(,%eax,8),%eax
4039fc:	03 f8                	add    %eax,%edi
4039fe:	83 3f 00             	cmpl   $0x0,(%edi)
403a01:	75 8a                	jne    0x40398d
403a03:	85 f6                	test   %esi,%esi
403a05:	78 07                	js     0x403a0e
403a07:	e8 dc 02 00 00       	call   0x403ce8
403a0c:	8b f0                	mov    %eax,%esi
403a0e:	8b c6                	mov    %esi,%eax
403a10:	5f                   	pop    %edi
403a11:	5e                   	pop    %esi
403a12:	8b e5                	mov    %ebp,%esp
403a14:	5d                   	pop    %ebp
403a15:	8b e3                	mov    %ebx,%esp
403a17:	5b                   	pop    %ebx
403a18:	c2 04 00             	ret    $0x4
403a1b:	8b ff                	mov    %edi,%edi
403a1d:	51                   	push   %ecx
403a1e:	53                   	push   %ebx
403a1f:	56                   	push   %esi
403a20:	57                   	push   %edi
403a21:	8b 3d e0 63 40 00    	mov    0x4063e0,%edi
403a27:	85 ff                	test   %edi,%edi
403a29:	74 69                	je     0x403a94
403a2b:	33 db                	xor    %ebx,%ebx
403a2d:	eb 5c                	jmp    0x403a8b
403a2f:	8b 77 18             	mov    0x18(%edi),%esi
403a32:	85 f6                	test   %esi,%esi
403a34:	74 0e                	je     0x403a44
403a36:	8b ce                	mov    %esi,%ecx
403a38:	ff 15 d0 71 40 00    	call   *0x4071d0
403a3e:	ff d6                	call   *%esi
403a40:	85 c0                	test   %eax,%eax
403a42:	75 35                	jne    0x403a79
403a44:	8b 77 04             	mov    0x4(%edi),%esi
403a47:	8b ce                	mov    %esi,%ecx
403a49:	53                   	push   %ebx
403a4a:	ff 15 d0 71 40 00    	call   *0x4071d0
403a50:	ff d6                	call   *%esi
403a52:	81 3d d0 63 40 00 84 	cmpl   $0x84,0x4063d0
403a59:	00 00 00
403a5c:	75 1b                	jne    0x403a79
403a5e:	8b 77 1c             	mov    0x1c(%edi),%esi
403a61:	85 f6                	test   %esi,%esi
403a63:	74 21                	je     0x403a86
403a65:	53                   	push   %ebx
403a66:	8b ce                	mov    %esi,%ecx
403a68:	ff 15 d0 71 40 00    	call   *0x4071d0
403a6e:	ff d6                	call   *%esi
403a70:	8b 0f                	mov    (%edi),%ecx
403a72:	8b d0                	mov    %eax,%edx
403a74:	e8 e9 fd ff ff       	call   0x403862
403a79:	83 3d d0 63 40 00 64 	cmpl   $0x64,0x4063d0
403a80:	75 04                	jne    0x403a86
403a82:	6a 1c                	push   $0x1c
403a84:	eb 02                	jmp    0x403a88
403a86:	6a 24                	push   $0x24
403a88:	58                   	pop    %eax
403a89:	03 f8                	add    %eax,%edi
403a8b:	39 1f                	cmp    %ebx,(%edi)
403a8d:	75 a0                	jne    0x403a2f
403a8f:	e8 88 01 00 00       	call   0x403c1c
403a94:	5f                   	pop    %edi
403a95:	5e                   	pop    %esi
403a96:	33 c0                	xor    %eax,%eax
403a98:	5b                   	pop    %ebx
403a99:	59                   	pop    %ecx
403a9a:	c2 04 00             	ret    $0x4
403a9d:	8b ff                	mov    %edi,%edi
403a9f:	55                   	push   %ebp
403aa0:	8b ec                	mov    %esp,%ebp
403aa2:	81 ec 38 02 00 00    	sub    $0x238,%esp
403aa8:	a1 54 60 40 00       	mov    0x406054,%eax
403aad:	33 c5                	xor    %ebp,%eax
403aaf:	89 45 fc             	mov    %eax,-0x4(%ebp)
403ab2:	8b 45 08             	mov    0x8(%ebp),%eax
403ab5:	89 85 cc fd ff ff    	mov    %eax,-0x234(%ebp)
403abb:	53                   	push   %ebx
403abc:	8b 5d 0c             	mov    0xc(%ebp),%ebx
403abf:	89 9d d0 fd ff ff    	mov    %ebx,-0x230(%ebp)
403ac5:	57                   	push   %edi
403ac6:	85 c0                	test   %eax,%eax
403ac8:	0f 84 39 01 00 00    	je     0x403c07
403ace:	33 ff                	xor    %edi,%edi
403ad0:	89 38                	mov    %edi,(%eax)
403ad2:	85 db                	test   %ebx,%ebx
403ad4:	0f 84 2d 01 00 00    	je     0x403c07
403ada:	56                   	push   %esi
403adb:	be 04 01 00 00       	mov    $0x104,%esi
403ae0:	89 3b                	mov    %edi,(%ebx)
403ae2:	56                   	push   %esi
403ae3:	8d 85 d4 fd ff ff    	lea    -0x22c(%ebp),%eax
403ae9:	89 bd c8 fd ff ff    	mov    %edi,-0x238(%ebp)
403aef:	50                   	push   %eax
403af0:	ff 35 dc 63 40 00    	push   0x4063dc
403af6:	ff 15 90 70 40 00    	call   *0x407090
403afc:	3b c6                	cmp    %esi,%eax
403afe:	75 0a                	jne    0x403b0a
403b00:	be 6f 00 07 80       	mov    $0x8007006f,%esi
403b05:	e9 ed 00 00 00       	jmp    0x403bf7
403b0a:	85 c0                	test   %eax,%eax
403b0c:	75 1e                	jne    0x403b2c
403b0e:	ff 15 40 70 40 00    	call   *0x407040
403b14:	8b f0                	mov    %eax,%esi
403b16:	85 f6                	test   %esi,%esi
403b18:	0f 8e d9 00 00 00    	jle    0x403bf7
403b1e:	0f b7 f6             	movzwl %si,%esi
403b21:	81 ce 00 00 07 80    	or     $0x80070000,%esi
403b27:	e9 cb 00 00 00       	jmp    0x403bf7
403b2c:	53                   	push   %ebx
403b2d:	8d 85 d4 fd ff ff    	lea    -0x22c(%ebp),%eax
403b33:	50                   	push   %eax
403b34:	ff 15 04 80 40 00    	call   *0x408004
403b3a:	8b f0                	mov    %eax,%esi
403b3c:	85 f6                	test   %esi,%esi
403b3e:	0f 89 9e 00 00 00    	jns    0x403be2
403b44:	66 8b 8d d4 fd ff ff 	mov    -0x22c(%ebp),%cx
403b4b:	8d 85 d4 fd ff ff    	lea    -0x22c(%ebp),%eax
403b51:	8b df                	mov    %edi,%ebx
403b53:	66 85 c9             	test   %cx,%cx
403b56:	74 30                	je     0x403b88
403b58:	0f b7 d1             	movzwl %cx,%edx
403b5b:	66 83 fa 5c          	cmp    $0x5c,%dx
403b5f:	74 10                	je     0x403b71
403b61:	66 83 fa 2f          	cmp    $0x2f,%dx
403b65:	74 0a                	je     0x403b71
403b67:	66 83 fa 2e          	cmp    $0x2e,%dx
403b6b:	75 06                	jne    0x403b73
403b6d:	8b d8                	mov    %eax,%ebx
403b6f:	eb 02                	jmp    0x403b73
403b71:	8b df                	mov    %edi,%ebx
403b73:	50                   	push   %eax
403b74:	ff 15 14 71 40 00    	call   *0x407114
403b7a:	0f b7 08             	movzwl (%eax),%ecx
403b7d:	8b d1                	mov    %ecx,%edx
403b7f:	66 85 c9             	test   %cx,%cx
403b82:	75 d7                	jne    0x403b5b
403b84:	85 db                	test   %ebx,%ebx
403b86:	75 02                	jne    0x403b8a
403b88:	8b d8                	mov    %eax,%ebx
403b8a:	be 40 15 40 00       	mov    $0x401540,%esi
403b8f:	8d 85 d4 fd ff ff    	lea    -0x22c(%ebp),%eax
403b95:	8d 7d f0             	lea    -0x10(%ebp),%edi
403b98:	8b cb                	mov    %ebx,%ecx
403b9a:	2b c8                	sub    %eax,%ecx
403b9c:	d1 f9                	sar    $1,%ecx
403b9e:	a5                   	movsl  %ds:(%esi),%es:(%edi)
403b9f:	8d 41 05             	lea    0x5(%ecx),%eax
403ba2:	a5                   	movsl  %ds:(%esi),%es:(%edi)
403ba3:	66 a5                	movsw  %ds:(%esi),%es:(%edi)
403ba5:	3d 04 01 00 00       	cmp    $0x104,%eax
403baa:	76 07                	jbe    0x403bb3
403bac:	be 05 40 00 80       	mov    $0x80004005,%esi
403bb1:	eb 44                	jmp    0x403bf7
403bb3:	8d 45 f0             	lea    -0x10(%ebp),%eax
403bb6:	50                   	push   %eax
403bb7:	b8 0e 01 00 00       	mov    $0x10e,%eax
403bbc:	2b c1                	sub    %ecx,%eax
403bbe:	50                   	push   %eax
403bbf:	53                   	push   %ebx
403bc0:	ff 15 b0 71 40 00    	call   *0x4071b0
403bc6:	83 c4 0c             	add    $0xc,%esp
403bc9:	8d 85 d4 fd ff ff    	lea    -0x22c(%ebp),%eax
403bcf:	ff b5 d0 fd ff ff    	push   -0x230(%ebp)
403bd5:	50                   	push   %eax