403956:	8b c0                	mov    %eax,%eax
403958:	53                   	push   %ebx
403959:	56                   	push   %esi
40395a:	89 c3                	mov    %eax,%ebx
40395c:	89 c6                	mov    %eax,%esi
40395e:	8b 36                	mov    (%esi),%esi
403960:	8b 56 c0             	mov    -0x40(%esi),%edx
403963:	8b 76 dc             	mov    -0x24(%esi),%esi
403966:	85 d2                	test   %edx,%edx
403968:	74 07                	je     0x403971
40396a:	e8 f1 18 00 00       	call   0x405260
40396f:	89 d8                	mov    %ebx,%eax
403971:	85 f6                	test   %esi,%esi
403973:	75 e9                	jne    0x40395e
403975:	5e                   	pop    %esi
403976:	5b                   	pop    %ebx
403977:	c3                   	ret
403978:	87 d1                	xchg   %edx,%ecx
40397a:	81 f9 00 00 00 ff    	cmp    $0xff000000,%ecx
403980:	73 11                	jae    0x403993
403982:	81 f9 00 00 00 fe    	cmp    $0xfe000000,%ecx
403988:	72 07                	jb     0x403991
40398a:	0f bf c9             	movswl %cx,%ecx
40398d:	03 08                	add    (%eax),%ecx
40398f:	ff 21                	jmp    *(%ecx)
403991:	ff e1                	jmp    *%ecx
403993:	81 e1 ff ff ff 00    	and    $0xffffff,%ecx
403999:	01 c1                	add    %eax,%ecx
40399b:	89 d0                	mov    %edx,%eax
40399d:	8b 11                	mov    (%ecx),%edx
40399f:	e9 98 27 00 00       	jmp    0x40613c
4039a4:	c3                   	ret
4039a5:	8d 40 00             	lea    0x0(%eax),%eax
4039a8:	55                   	push   %ebp
4039a9:	8b ec                	mov    %esp,%ebp
4039ab:	83 c4 f8             	add    $0xfffffff8,%esp
4039ae:	53                   	push   %ebx
4039af:	56                   	push   %esi
4039b0:	57                   	push   %edi
4039b1:	33 db                	xor    %ebx,%ebx
4039b3:	89 5d f8             	mov    %ebx,-0x8(%ebp)
4039b6:	8b f1                	mov    %ecx,%esi
4039b8:	89 55 fc             	mov    %edx,-0x4(%ebp)
4039bb:	8b f8                	mov    %eax,%edi
4039bd:	33 c0                	xor    %eax,%eax
4039bf:	55                   	push   %ebp
4039c0:	68 2c 3a 40 00       	push   $0x403a2c
4039c5:	64 ff 30             	push   %fs:(%eax)
4039c8:	64 89 20             	mov    %esp,%fs:(%eax)
4039cb:	33 c0                	xor    %eax,%eax
4039cd:	89 06                	mov    %eax,(%esi)
4039cf:	8b 55 fc             	mov    -0x4(%ebp),%edx
4039d2:	8b 07                	mov    (%edi),%eax
4039d4:	e8 63 00 00 00       	call   0x403a3c
4039d9:	8b d8                	mov    %eax,%ebx
4039db:	85 db                	test   %ebx,%ebx
4039dd:	74 31                	je     0x403a10
4039df:	8b 43 14             	mov    0x14(%ebx),%eax
4039e2:	85 c0                	test   %eax,%eax
4039e4:	74 13                	je     0x4039f9
4039e6:	03 f8                	add    %eax,%edi
4039e8:	89 3e                	mov    %edi,(%esi)
4039ea:	83 3e 00             	cmpl   $0x0,(%esi)
4039ed:	74 21                	je     0x403a10
4039ef:	8b 06                	mov    (%esi),%eax
4039f1:	50                   	push   %eax
4039f2:	8b 00                	mov    (%eax),%eax
4039f4:	ff 50 04             	call   *0x4(%eax)
4039f7:	eb 17                	jmp    0x403a10
4039f9:	8d 4d f8             	lea    -0x8(%ebp),%ecx
4039fc:	8b 53 18             	mov    0x18(%ebx),%edx
4039ff:	8b c7                	mov    %edi,%eax
403a01:	e8 72 ff ff ff       	call   0x403978
403a06:	8b 55 f8             	mov    -0x8(%ebp),%edx
403a09:	8b c6                	mov    %esi,%eax
403a0b:	e8 2c 27 00 00       	call   0x40613c
403a10:	83 3e 00             	cmpl   $0x0,(%esi)
403a13:	0f 95 c3             	setne  %bl
403a16:	33 c0                	xor    %eax,%eax
403a18:	5a                   	pop    %edx
403a19:	59                   	pop    %ecx
403a1a:	59                   	pop    %ecx
403a1b:	64 89 10             	mov    %edx,%fs:(%eax)
403a1e:	68 33 3a 40 00       	push   $0x403a33
403a23:	8d 45 f8             	lea    -0x8(%ebp),%eax
403a26:	e8 f9 26 00 00       	call   0x406124
403a2b:	c3                   	ret
403a2c:	e9 57 06 00 00       	jmp    0x404088
403a31:	eb f0                	jmp    0x403a23
403a33:	8b c3                	mov    %ebx,%eax
403a35:	5f                   	pop    %edi
403a36:	5e                   	pop    %esi
403a37:	5b                   	pop    %ebx
403a38:	59                   	pop    %ecx
403a39:	59                   	pop    %ecx
403a3a:	5d                   	pop    %ebp
403a3b:	c3                   	ret
403a3c:	53                   	push   %ebx
403a3d:	56                   	push   %esi
403a3e:	89 c3                	mov    %eax,%ebx
403a40:	8b 43 b8             	mov    -0x48(%ebx),%eax
403a43:	85 c0                	test   %eax,%eax
403a45:	74 29                	je     0x403a70
403a47:	8b 08                	mov    (%eax),%ecx
403a49:	83 c0 04             	add    $0x4,%eax
403a4c:	8b 32                	mov    (%edx),%esi
403a4e:	3b 30                	cmp    (%eax),%esi
403a50:	75 18                	jne    0x403a6a
403a52:	8b 72 04             	mov    0x4(%edx),%esi
403a55:	3b 70 04             	cmp    0x4(%eax),%esi
403a58:	75 10                	jne    0x403a6a
403a5a:	8b 72 08             	mov    0x8(%edx),%esi
403a5d:	3b 70 08             	cmp    0x8(%eax),%esi
403a60:	75 08                	jne    0x403a6a
403a62:	8b 72 0c             	mov    0xc(%edx),%esi
403a65:	3b 70 0c             	cmp    0xc(%eax),%esi
403a68:	74 13                	je     0x403a7d
403a6a:	83 c0 1c             	add    $0x1c,%eax
403a6d:	49                   	dec    %ecx
403a6e:	75 dc                	jne    0x403a4c
403a70:	8b 5b dc             	mov    -0x24(%ebx),%ebx
403a73:	85 db                	test   %ebx,%ebx
403a75:	74 04                	je     0x403a7b
403a77:	8b 1b                	mov    (%ebx),%ebx
403a79:	eb c5                	jmp    0x403a40
403a7b:	31 c0                	xor    %eax,%eax
403a7d:	5e                   	pop    %esi
403a7e:	5b                   	pop    %ebx
403a7f:	c3                   	ret
403a80:	53                   	push   %ebx
403a81:	56                   	push   %esi
403a82:	8b f2                	mov    %edx,%esi
403a84:	8b d8                	mov    %eax,%ebx
403a86:	85 db                	test   %ebx,%ebx
403a88:	74 0d                	je     0x403a97
403a8a:	8b d6                	mov    %esi,%edx
403a8c:	8b 03                	mov    (%ebx),%eax
403a8e:	e8 8d 00 00 00       	call   0x403b20
403a93:	84 c0                	test   %al,%al
403a95:	75 05                	jne    0x403a9c
403a97:	33 c0                	xor    %eax,%eax
403a99:	5e                   	pop    %esi
403a9a:	5b                   	pop    %ebx
403a9b:	c3                   	ret
403a9c:	b0 01                	mov    $0x1,%al
403a9e:	5e                   	pop    %esi
403a9f:	5b                   	pop    %ebx
403aa0:	c3                   	ret
403aa1:	8d 40 00             	lea    0x0(%eax),%eax
403aa4:	85 c0                	test   %eax,%eax
403aa6:	74 16                	je     0x403abe
403aa8:	89 c1                	mov    %eax,%ecx
403aaa:	8b 09                	mov    (%ecx),%ecx
403aac:	39 d1                	cmp    %edx,%ecx
403aae:	74 0e                	je     0x403abe
403ab0:	8b 49 dc             	mov    -0x24(%ecx),%ecx
403ab3:	85 c9                	test   %ecx,%ecx
403ab5:	75 f3                	jne    0x403aaa
403ab7:	b0 0a                	mov    $0xa,%al
403ab9:	e9 7e f3 ff ff       	jmp    0x402e3c
403abe:	c3                   	ret
403abf:	90                   	nop
403ac0:	57                   	push   %edi
403ac1:	96                   	xchg   %eax,%esi
403ac2:	eb 02                	jmp    0x403ac6
403ac4:	8b 36                	mov    (%esi),%esi
403ac6:	8b 7e d0             	mov    -0x30(%esi),%edi
403ac9:	85 ff                	test   %edi,%edi
403acb:	74 0d                	je     0x403ada
403acd:	0f b7 0f             	movzwl (%edi),%ecx
403ad0:	51                   	push   %ecx
403ad1:	83 c7 02             	add    $0x2,%edi
403ad4:	f2 66 af             	repnz scas %es:(%edi),%ax
403ad7:	74 0a                	je     0x403ae3
403ad9:	59                   	pop    %ecx
403ada:	8b 76 dc             	mov    -0x24(%esi),%esi
403add:	85 f6                	test   %esi,%esi
403adf:	75 e3                	jne    0x403ac4
403ae1:	5f                   	pop    %edi
403ae2:	c3                   	ret
403ae3:	58                   	pop    %eax
403ae4:	01 c0                	add    %eax,%eax
403ae6:	29 c8                	sub    %ecx,%eax
403ae8:	8b 74 47 fc          	mov    -0x4(%edi,%eax,2),%esi
403aec:	5f                   	pop    %edi
403aed:	c3                   	ret
403aee:	8b c0                	mov    %eax,%eax
403af0:	50                   	push   %eax
403af1:	51                   	push   %ecx
403af2:	8b 00                	mov    (%eax),%eax
403af4:	e8 c7 ff ff ff       	call   0x403ac0
403af9:	59                   	pop    %ecx
403afa:	58                   	pop    %eax
403afb:	74 02                	je     0x403aff
403afd:	ff e6                	jmp    *%esi
403aff:	59                   	pop    %ecx
403b00:	e9 53 f5 ff ff       	jmp    0x403058
403b05:	c3                   	ret
403b06:	8b c0                	mov    %eax,%eax
403b08:	56                   	push   %esi
403b09:	89 d6                	mov    %edx,%esi
403b0b:	8b 00                	mov    (%eax),%eax
403b0d:	e8 ae ff ff ff       	call   0x403ac0
403b12:	89 f0                	mov    %esi,%eax
403b14:	5e                   	pop    %esi
403b15:	75 06                	jne    0x403b1d
403b17:	59                   	pop    %ecx
403b18:	e9 3b f5 ff ff       	jmp    0x403058
403b1d:	c3                   	ret
403b1e:	8b c0                	mov    %eax,%eax
403b20:	eb 02                	jmp    0x403b24
403b22:	8b 00                	mov    (%eax),%eax
403b24:	39 d0                	cmp    %edx,%eax
403b26:	74 08                	je     0x403b30
403b28:	8b 40 dc             	mov    -0x24(%eax),%eax
403b2b:	85 c0                	test   %eax,%eax
403b2d:	75 f3                	jne    0x403b22
403b2f:	c3                   	ret
403b30:	b0 01                	mov    $0x1,%al
403b32:	c3                   	ret
403b33:	90                   	nop
403b34:	83 c0 c4             	add    $0xffffffc4,%eax
403b37:	8b 00                	mov    (%eax),%eax
403b39:	c3                   	ret
403b3a:	8b c0                	mov    %eax,%eax
403b3c:	b8 ff ff 00 80       	mov    $0x8000ffff,%eax
403b41:	c3                   	ret
403b42:	8b c0                	mov    %eax,%eax
403b44:	c3                   	ret
403b45:	8d 40 00             	lea    0x0(%eax),%eax
403b48:	c3                   	ret
403b49:	8d 40 00             	lea    0x0(%eax),%eax
403b4c:	c3                   	ret
403b4d:	8d 40 00             	lea    0x0(%eax),%eax
403b50:	56                   	push   %esi
403b51:	66 8b 32             	mov    (%edx),%si
403b54:	66 09 f6             	or     %si,%si
403b57:	74 17                	je     0x403b70
403b59:	66 81 fe 00 c0       	cmp    $0xc000,%si
403b5e:	73 10                	jae    0x403b70
403b60:	50                   	push   %eax
403b61:	8b 00                	mov    (%eax),%eax
403b63:	e8 58 ff ff ff       	call   0x403ac0
403b68:	58                   	pop    %eax
403b69:	74 05                	je     0x403b70
403b6b:	89 f1                	mov    %esi,%ecx
403b6d:	5e                   	pop    %esi
403b6e:	ff e1                	jmp    *%ecx
403b70:	5e                   	pop    %esi
403b71:	8b 08                	mov    (%eax),%ecx
403b73:	ff 61 f0             	jmp    *-0x10(%ecx)
403b76:	c3                   	ret
403b77:	90                   	nop
403b78:	53                   	push   %ebx
403b79:	56                   	push   %esi
403b7a:	57                   	push   %edi
403b7b:	31 c9                	xor    %ecx,%ecx
403b7d:	31 ff                	xor    %edi,%edi
403b7f:	8a 1a                	mov    (%edx),%bl
403b81:	eb 02                	jmp    0x403b85
403b83:	8b 00                	mov    (%eax),%eax
403b85:	8b 70 cc             	mov    -0x34(%eax),%esi
403b88:	85 f6                	test   %esi,%esi
403b8a:	74 15                	je     0x403ba1
403b8c:	66 8b 3e             	mov    (%esi),%di
403b8f:	83 c6 02             	add    $0x2,%esi
403b92:	8a 4e 06             	mov    0x6(%esi),%cl
403b95:	38 d9                	cmp    %bl,%cl
403b97:	74 15                	je     0x403bae
403b99:	66 8b 0e             	mov    (%esi),%cx
403b9c:	01 ce                	add    %ecx,%esi
403b9e:	4f                   	dec    %edi
403b9f:	75 f1                	jne    0x403b92
403ba1:	8b 40 dc             	mov    -0x24(%eax),%eax
403ba4:	85 c0                	test   %eax,%eax
403ba6:	75 db                	jne    0x403b83
403ba8:	eb 18                	jmp    0x403bc2
403baa:	8a 1a                	mov    (%edx),%bl
403bac:	eb eb                	jmp    0x403b99
403bae:	b5 00                	mov    $0x0,%ch
403bb0:	8a 5c 31 06          	mov    0x6(%ecx,%esi,1),%bl
403bb4:	32 1c 11             	xor    (%ecx,%edx,1),%bl
403bb7:	80 e3 df             	and    $0xdf,%bl
403bba:	75 ee                	jne    0x403baa
403bbc:	49                   	dec    %ecx
403bbd:	75 f1                	jne    0x403bb0
403bbf:	8b 46 02             	mov    0x2(%esi),%eax
403bc2:	5f                   	pop    %edi
403bc3:	5e                   	pop    %esi
403bc4:	5b                   	pop    %ebx
403bc5:	c3                   	ret
403bc6:	8b c0                	mov    %eax,%eax
403bc8:	53                   	push   %ebx
403bc9:	56                   	push   %esi
403bca:	57                   	push   %edi
403bcb:	31 c9                	xor    %ecx,%ecx
403bcd:	31 ff                	xor    %edi,%edi
403bcf:	8a 1a                	mov    (%edx),%bl
403bd1:	50                   	push   %eax
403bd2:	8b 00                	mov    (%eax),%eax
403bd4:	8b 70 c8             	mov    -0x38(%eax),%esi
403bd7:	85 f6                	test   %esi,%esi
403bd9:	74 14                	je     0x403bef
403bdb:	66 8b 3e             	mov    (%esi),%di
403bde:	83 c6 06             	add    $0x6,%esi
403be1:	8a 4e 06             	mov    0x6(%esi),%cl
403be4:	38 d9                	cmp    %bl,%cl
403be6:	74 18                	je     0x403c00
403be8:	8d 74 31 07          	lea    0x7(%ecx,%esi,1),%esi
403bec:	4f                   	dec    %edi
403bed:	75 f2                	jne    0x403be1
403bef:	8b 40 dc             	mov    -0x24(%eax),%eax
403bf2:	85 c0                	test   %eax,%eax
403bf4:	75 dc                	jne    0x403bd2
403bf6:	5a                   	pop    %edx
403bf7:	eb 1b                	jmp    0x403c14
403bf9:	8a 1a                	mov    (%edx),%bl
403bfb:	8a 4e 06             	mov    0x6(%esi),%cl
403bfe:	eb e8                	jmp    0x403be8
403c00:	8a 5c 31 06          	mov    0x6(%ecx,%esi,1),%bl
403c04:	32 1c 11             	xor    (%ecx,%edx,1),%bl
403c07:	80 e3 df             	and    $0xdf,%bl
403c0a:	75 ed                	jne    0x403bf9
403c0c:	49                   	dec    %ecx
403c0d:	75 f1                	jne    0x403c00
403c0f:	8b 06                	mov    (%esi),%eax
403c11:	5a                   	pop    %edx
403c12:	01 d0                	add    %edx,%eax
403c14:	5f                   	pop    %edi
403c15:	5e                   	pop    %esi
403c16:	5b                   	pop    %ebx
403c17:	c3                   	ret
403c18:	52                   	push   %edx
403c19:	51                   	push   %ecx
403c1a:	53                   	push   %ebx
403c1b:	84 d2                	test   %dl,%dl
403c1d:	7c 03                	jl     0x403c22
403c1f:	ff 50 f4             	call   *-0xc(%eax)
403c22:	31 d2                	xor    %edx,%edx
403c24:	8d 4c 24 10          	lea    0x10(%esp),%ecx
403c28:	64 8b 1a             	mov    %fs:(%edx),%ebx
403c2b:	89 19                	mov    %ebx,(%ecx)
403c2d:	89 69 08             	mov    %ebp,0x8(%ecx)
403c30:	c7 41 04 41 3c 40 00 	movl   $0x403c41,0x4(%ecx)
403c37:	89 41 0c             	mov    %eax,0xc(%ecx)
403c3a:	64 89 0a             	mov    %ecx,%fs:(%edx)
403c3d:	5b                   	pop    %ebx
403c3e:	59                   	pop    %ecx
403c3f:	5a                   	pop    %edx
403c40:	c3                   	ret