403750:	8b 70 d4             	mov    -0x2c(%eax),%esi
403753:	31 c9                	xor    %ecx,%ecx
403755:	8a 0e                	mov    (%esi),%cl
403757:	41                   	inc    %ecx
403758:	f3 a4                	rep movsb %ds:(%esi),%es:(%edi)
40375a:	5f                   	pop    %edi
40375b:	5e                   	pop    %esi
40375c:	c3                   	ret
40375d:	8d 40 00             	lea    0x0(%eax),%eax
403760:	53                   	push   %ebx
403761:	31 db                	xor    %ebx,%ebx
403763:	09 d2                	or     %edx,%edx
403765:	74 1c                	je     0x403783
403767:	8b 40 d4             	mov    -0x2c(%eax),%eax
40376a:	31 c9                	xor    %ecx,%ecx
40376c:	8a 08                	mov    (%eax),%cl
40376e:	3b 4a fc             	cmp    -0x4(%edx),%ecx
403771:	75 10                	jne    0x403783
403773:	4a                   	dec    %edx
403774:	8a 3c 01             	mov    (%ecx,%eax,1),%bh
403777:	32 3c 11             	xor    (%ecx,%edx,1),%bh
40377a:	80 e7 df             	and    $0xdf,%bh
40377d:	75 04                	jne    0x403783
40377f:	49                   	dec    %ecx
403780:	75 f2                	jne    0x403774
403782:	43                   	inc    %ebx
403783:	88 d8                	mov    %bl,%al
403785:	5b                   	pop    %ebx
403786:	c3                   	ret
403787:	90                   	nop
403788:	8b 40 dc             	mov    -0x24(%eax),%eax
40378b:	85 c0                	test   %eax,%eax
40378d:	74 02                	je     0x403791
40378f:	8b 00                	mov    (%eax),%eax
403791:	c3                   	ret
403792:	8b c0                	mov    %eax,%eax
403794:	53                   	push   %ebx
403795:	8b d8                	mov    %eax,%ebx
403797:	8b c3                	mov    %ebx,%eax
403799:	e8 26 00 00 00       	call   0x4037c4
40379e:	e8 95 f2 ff ff       	call   0x402a38
4037a3:	8b d0                	mov    %eax,%edx
4037a5:	8b c3                	mov    %ebx,%eax
4037a7:	e8 5c 00 00 00       	call   0x403808
4037ac:	5b                   	pop    %ebx
4037ad:	c3                   	ret
4037ae:	8b c0                	mov    %eax,%eax
4037b0:	53                   	push   %ebx
4037b1:	8b d8                	mov    %eax,%ebx
4037b3:	8b c3                	mov    %ebx,%eax
4037b5:	e8 a6 00 00 00       	call   0x403860
4037ba:	8b c3                	mov    %ebx,%eax
4037bc:	e8 a7 f2 ff ff       	call   0x402a68
4037c1:	5b                   	pop    %ebx
4037c2:	c3                   	ret
4037c3:	90                   	nop
4037c4:	83 c0 d8             	add    $0xffffffd8,%eax
4037c7:	8b 00                	mov    (%eax),%eax
4037c9:	c3                   	ret
4037ca:	8b c0                	mov    %eax,%eax
4037cc:	84 d2                	test   %dl,%dl
4037ce:	74 08                	je     0x4037d8
4037d0:	83 c4 f0             	add    $0xfffffff0,%esp
4037d3:	e8 44 03 00 00       	call   0x403b1c
4037d8:	84 d2                	test   %dl,%dl
4037da:	74 0f                	je     0x4037eb
4037dc:	e8 93 03 00 00       	call   0x403b74
4037e1:	64 8f 05 00 00 00 00 	pop    %fs:0x0
4037e8:	83 c4 0c             	add    $0xc,%esp
4037eb:	c3                   	ret
4037ec:	e8 93 03 00 00       	call   0x403b84
4037f1:	84 d2                	test   %dl,%dl
4037f3:	7e 05                	jle    0x4037fa
4037f5:	e8 72 03 00 00       	call   0x403b6c
4037fa:	c3                   	ret
4037fb:	90                   	nop
4037fc:	85 c0                	test   %eax,%eax
4037fe:	74 07                	je     0x403807
403800:	b2 01                	mov    $0x1,%dl
403802:	8b 08                	mov    (%eax),%ecx
403804:	ff 51 fc             	call   *-0x4(%ecx)
403807:	c3                   	ret
403808:	53                   	push   %ebx
403809:	56                   	push   %esi
40380a:	57                   	push   %edi
40380b:	89 c3                	mov    %eax,%ebx
40380d:	89 d7                	mov    %edx,%edi
40380f:	ab                   	stos   %eax,%es:(%edi)
403810:	8b 4b d8             	mov    -0x28(%ebx),%ecx
403813:	31 c0                	xor    %eax,%eax
403815:	51                   	push   %ecx
403816:	c1 e9 02             	shr    $0x2,%ecx
403819:	49                   	dec    %ecx
40381a:	f3 ab                	rep stos %eax,%es:(%edi)
40381c:	59                   	pop    %ecx
40381d:	83 e1 03             	and    $0x3,%ecx
403820:	f3 aa                	rep stos %al,%es:(%edi)
403822:	89 d0                	mov    %edx,%eax
403824:	89 e2                	mov    %esp,%edx
403826:	8b 4b b8             	mov    -0x48(%ebx),%ecx
403829:	85 c9                	test   %ecx,%ecx
40382b:	74 01                	je     0x40382e
40382d:	51                   	push   %ecx
40382e:	8b 5b dc             	mov    -0x24(%ebx),%ebx
403831:	85 db                	test   %ebx,%ebx
403833:	74 04                	je     0x403839
403835:	8b 1b                	mov    (%ebx),%ebx
403837:	eb ed                	jmp    0x403826
403839:	39 d4                	cmp    %edx,%esp
40383b:	74 1d                	je     0x40385a
40383d:	5b                   	pop    %ebx
40383e:	8b 0b                	mov    (%ebx),%ecx
403840:	83 c3 04             	add    $0x4,%ebx
403843:	8b 73 10             	mov    0x10(%ebx),%esi
403846:	85 f6                	test   %esi,%esi
403848:	74 06                	je     0x403850
40384a:	8b 7b 14             	mov    0x14(%ebx),%edi
40384d:	89 34 07             	mov    %esi,(%edi,%eax,1)
403850:	83 c3 1c             	add    $0x1c,%ebx
403853:	49                   	dec    %ecx
403854:	75 ed                	jne    0x403843
403856:	39 d4                	cmp    %edx,%esp
403858:	75 e3                	jne    0x40383d
40385a:	5f                   	pop    %edi
40385b:	5e                   	pop    %esi
40385c:	5b                   	pop    %ebx
40385d:	c3                   	ret
40385e:	8b c0                	mov    %eax,%eax
403860:	53                   	push   %ebx
403861:	56                   	push   %esi
403862:	89 c3                	mov    %eax,%ebx
403864:	89 c6                	mov    %eax,%esi
403866:	8b 36                	mov    (%esi),%esi
403868:	8b 56 c0             	mov    -0x40(%esi),%edx
40386b:	8b 76 dc             	mov    -0x24(%esi),%esi
40386e:	85 d2                	test   %edx,%edx
403870:	74 07                	je     0x403879
403872:	e8 2d 17 00 00       	call   0x404fa4
403877:	89 d8                	mov    %ebx,%eax
403879:	85 f6                	test   %esi,%esi
40387b:	75 e9                	jne    0x403866
40387d:	5e                   	pop    %esi
40387e:	5b                   	pop    %ebx
40387f:	c3                   	ret
403880:	87 d1                	xchg   %edx,%ecx
403882:	81 f9 00 00 00 ff    	cmp    $0xff000000,%ecx
403888:	73 11                	jae    0x40389b
40388a:	81 f9 00 00 00 fe    	cmp    $0xfe000000,%ecx
403890:	72 07                	jb     0x403899
403892:	0f bf c9             	movswl %cx,%ecx
403895:	03 08                	add    (%eax),%ecx
403897:	ff 21                	jmp    *(%ecx)
403899:	ff e1                	jmp    *%ecx
40389b:	81 e1 ff ff ff 00    	and    $0xffffff,%ecx
4038a1:	01 c1                	add    %eax,%ecx
4038a3:	89 d0                	mov    %edx,%eax
4038a5:	8b 11                	mov    (%ecx),%edx
4038a7:	e9 e4 23 00 00       	jmp    0x405c90
4038ac:	c3                   	ret
4038ad:	8d 40 00             	lea    0x0(%eax),%eax
4038b0:	55                   	push   %ebp
4038b1:	8b ec                	mov    %esp,%ebp
4038b3:	83 c4 f8             	add    $0xfffffff8,%esp
4038b6:	53                   	push   %ebx
4038b7:	56                   	push   %esi
4038b8:	57                   	push   %edi
4038b9:	33 db                	xor    %ebx,%ebx
4038bb:	89 5d f8             	mov    %ebx,-0x8(%ebp)
4038be:	8b d9                	mov    %ecx,%ebx
4038c0:	8b fa                	mov    %edx,%edi
4038c2:	8b f0                	mov    %eax,%esi
4038c4:	33 c0                	xor    %eax,%eax
4038c6:	55                   	push   %ebp
4038c7:	68 3e 39 40 00       	push   $0x40393e
4038cc:	64 ff 30             	push   %fs:(%eax)
4038cf:	64 89 20             	mov    %esp,%fs:(%eax)
4038d2:	33 c0                	xor    %eax,%eax
4038d4:	89 03                	mov    %eax,(%ebx)
4038d6:	8b d7                	mov    %edi,%edx
4038d8:	8b 06                	mov    (%esi),%eax
4038da:	e8 71 00 00 00       	call   0x403950
4038df:	89 45 fc             	mov    %eax,-0x4(%ebp)
4038e2:	83 7d fc 00          	cmpl   $0x0,-0x4(%ebp)
4038e6:	74 38                	je     0x403920
4038e8:	8b 45 fc             	mov    -0x4(%ebp),%eax
4038eb:	8b 40 14             	mov    0x14(%eax),%eax
4038ee:	85 c0                	test   %eax,%eax
4038f0:	74 14                	je     0x403906
4038f2:	8b d0                	mov    %eax,%edx
4038f4:	03 d6                	add    %esi,%edx
4038f6:	89 13                	mov    %edx,(%ebx)
4038f8:	85 d2                	test   %edx,%edx
4038fa:	74 24                	je     0x403920
4038fc:	8b 03                	mov    (%ebx),%eax
4038fe:	50                   	push   %eax
4038ff:	8b 00                	mov    (%eax),%eax
403901:	ff 50 04             	call   *0x4(%eax)
403904:	eb 1a                	jmp    0x403920
403906:	8d 4d f8             	lea    -0x8(%ebp),%ecx
403909:	8b 45 fc             	mov    -0x4(%ebp),%eax
40390c:	8b 50 18             	mov    0x18(%eax),%edx
40390f:	8b c6                	mov    %esi,%eax
403911:	e8 6a ff ff ff       	call   0x403880
403916:	8b 55 f8             	mov    -0x8(%ebp),%edx
403919:	8b c3                	mov    %ebx,%eax
40391b:	e8 70 23 00 00       	call   0x405c90
403920:	83 3b 00             	cmpl   $0x0,(%ebx)
403923:	0f 95 c0             	setne  %al
403926:	8b d8                	mov    %eax,%ebx
403928:	33 c0                	xor    %eax,%eax
40392a:	5a                   	pop    %edx
40392b:	59                   	pop    %ecx
40392c:	59                   	pop    %ecx
40392d:	64 89 10             	mov    %edx,%fs:(%eax)
403930:	68 45 39 40 00       	push   $0x403945
403935:	8d 45 f8             	lea    -0x8(%ebp),%eax
403938:	e8 3b 23 00 00       	call   0x405c78
40393d:	c3                   	ret
40393e:	e9 09 06 00 00       	jmp    0x403f4c
403943:	eb f0                	jmp    0x403935
403945:	8b c3                	mov    %ebx,%eax
403947:	5f                   	pop    %edi
403948:	5e                   	pop    %esi
403949:	5b                   	pop    %ebx
40394a:	59                   	pop    %ecx
40394b:	59                   	pop    %ecx
40394c:	5d                   	pop    %ebp
40394d:	c3                   	ret
40394e:	8b c0                	mov    %eax,%eax
403950:	53                   	push   %ebx
403951:	56                   	push   %esi
403952:	89 c3                	mov    %eax,%ebx
403954:	8b 43 b8             	mov    -0x48(%ebx),%eax
403957:	85 c0                	test   %eax,%eax
403959:	74 29                	je     0x403984
40395b:	8b 08                	mov    (%eax),%ecx
40395d:	83 c0 04             	add    $0x4,%eax
403960:	8b 32                	mov    (%edx),%esi
403962:	3b 30                	cmp    (%eax),%esi
403964:	75 18                	jne    0x40397e
403966:	8b 72 04             	mov    0x4(%edx),%esi
403969:	3b 70 04             	cmp    0x4(%eax),%esi
40396c:	75 10                	jne    0x40397e
40396e:	8b 72 08             	mov    0x8(%edx),%esi
403971:	3b 70 08             	cmp    0x8(%eax),%esi
403974:	75 08                	jne    0x40397e
403976:	8b 72 0c             	mov    0xc(%edx),%esi
403979:	3b 70 0c             	cmp    0xc(%eax),%esi
40397c:	74 13                	je     0x403991
40397e:	83 c0 1c             	add    $0x1c,%eax
403981:	49                   	dec    %ecx
403982:	75 dc                	jne    0x403960
403984:	8b 5b dc             	mov    -0x24(%ebx),%ebx
403987:	85 db                	test   %ebx,%ebx
403989:	74 04                	je     0x40398f
40398b:	8b 1b                	mov    (%ebx),%ebx
40398d:	eb c5                	jmp    0x403954
40398f:	31 c0                	xor    %eax,%eax
403991:	5e                   	pop    %esi
403992:	5b                   	pop    %ebx
403993:	c3                   	ret
403994:	53                   	push   %ebx
403995:	56                   	push   %esi
403996:	8b f2                	mov    %edx,%esi
403998:	8b d8                	mov    %eax,%ebx
40399a:	85 db                	test   %ebx,%ebx
40399c:	74 0d                	je     0x4039ab
40399e:	8b d6                	mov    %esi,%edx
4039a0:	8b 03                	mov    (%ebx),%eax
4039a2:	e8 75 00 00 00       	call   0x403a1c
4039a7:	84 c0                	test   %al,%al
4039a9:	75 05                	jne    0x4039b0
4039ab:	33 c0                	xor    %eax,%eax
4039ad:	5e                   	pop    %esi
4039ae:	5b                   	pop    %ebx
4039af:	c3                   	ret
4039b0:	b0 01                	mov    $0x1,%al
4039b2:	5e                   	pop    %esi
4039b3:	5b                   	pop    %ebx
4039b4:	c3                   	ret
4039b5:	8d 40 00             	lea    0x0(%eax),%eax
4039b8:	85 c0                	test   %eax,%eax
4039ba:	74 16                	je     0x4039d2
4039bc:	89 c1                	mov    %eax,%ecx
4039be:	8b 09                	mov    (%ecx),%ecx
4039c0:	39 d1                	cmp    %edx,%ecx
4039c2:	74 0e                	je     0x4039d2
4039c4:	8b 49 dc             	mov    -0x24(%ecx),%ecx
4039c7:	85 c9                	test   %ecx,%ecx
4039c9:	75 f3                	jne    0x4039be
4039cb:	b0 0a                	mov    $0xa,%al
4039cd:	e9 e6 f1 ff ff       	jmp    0x402bb8
4039d2:	c3                   	ret
4039d3:	90                   	nop
4039d4:	57                   	push   %edi
4039d5:	96                   	xchg   %eax,%esi
4039d6:	eb 02                	jmp    0x4039da
4039d8:	8b 36                	mov    (%esi),%esi
4039da:	8b 7e d0             	mov    -0x30(%esi),%edi
4039dd:	85 ff                	test   %edi,%edi
4039df:	74 0d                	je     0x4039ee
4039e1:	0f b7 0f             	movzwl (%edi),%ecx
4039e4:	51                   	push   %ecx
4039e5:	83 c7 02             	add    $0x2,%edi
4039e8:	f2 66 af             	repnz scas %es:(%edi),%ax
4039eb:	74 0a                	je     0x4039f7
4039ed:	59                   	pop    %ecx
4039ee:	8b 76 dc             	mov    -0x24(%esi),%esi
4039f1:	85 f6                	test   %esi,%esi
4039f3:	75 e3                	jne    0x4039d8
4039f5:	5f                   	pop    %edi
4039f6:	c3                   	ret
4039f7:	58                   	pop    %eax
4039f8:	01 c0                	add    %eax,%eax
4039fa:	29 c8                	sub    %ecx,%eax
4039fc:	8b 74 47 fc          	mov    -0x4(%edi,%eax,2),%esi
403a00:	5f                   	pop    %edi
403a01:	c3                   	ret
403a02:	8b c0                	mov    %eax,%eax
403a04:	50                   	push   %eax
403a05:	51                   	push   %ecx
403a06:	8b 00                	mov    (%eax),%eax
403a08:	e8 c7 ff ff ff       	call   0x4039d4
403a0d:	59                   	pop    %ecx
403a0e:	58                   	pop    %eax
403a0f:	74 02                	je     0x403a13
403a11:	ff e6                	jmp    *%esi
403a13:	59                   	pop    %ecx
403a14:	e9 2b f3 ff ff       	jmp    0x402d44
403a19:	c3                   	ret
403a1a:	8b c0                	mov    %eax,%eax
403a1c:	eb 02                	jmp    0x403a20
403a1e:	8b 00                	mov    (%eax),%eax
403a20:	39 d0                	cmp    %edx,%eax
403a22:	74 08                	je     0x403a2c
403a24:	8b 40 dc             	mov    -0x24(%eax),%eax
403a27:	85 c0                	test   %eax,%eax
403a29:	75 f3                	jne    0x403a1e
403a2b:	c3                   	ret
403a2c:	b0 01                	mov    $0x1,%al
403a2e:	c3                   	ret
403a2f:	90                   	nop
403a30:	51                   	push   %ecx
403a31:	83 c0 c4             	add    $0xffffffc4,%eax
403a34:	8b 00                	mov    (%eax),%eax
403a36:	89 04 24             	mov    %eax,(%esp)
403a39:	8b 04 24             	mov    (%esp),%eax
403a3c:	5a                   	pop    %edx
403a3d:	c3                   	ret
403a3e:	8b c0                	mov    %eax,%eax