403945:	8b 7d 08             	mov    0x8(%ebp),%edi
403948:	8b de                	mov    %esi,%ebx
40394a:	89 5d f0             	mov    %ebx,-0x10(%ebp)
40394d:	85 ff                	test   %edi,%edi
40394f:	74 43                	je     0x403994
403951:	39 37                	cmp    %esi,(%edi)
403953:	75 3f                	jne    0x403994
403955:	6a 44                	push   $0x44
403957:	e8 3f 2f 00 00       	call   0x40689b
40395c:	59                   	pop    %ecx
40395d:	89 45 08             	mov    %eax,0x8(%ebp)
403960:	89 75 fc             	mov    %esi,-0x4(%ebp)
403963:	85 c0                	test   %eax,%eax
403965:	74 1e                	je     0x403985
403967:	8b 4d 0c             	mov    0xc(%ebp),%ecx
40396a:	e8 dc 08 00 00       	call   0x40424b
40396f:	50                   	push   %eax
403970:	8d 4d bc             	lea    -0x44(%ebp),%ecx
403973:	e8 ba f0 ff ff       	call   0x402a32
403978:	8b 4d 08             	mov    0x8(%ebp),%ecx
40397b:	43                   	inc    %ebx
40397c:	56                   	push   %esi
40397d:	50                   	push   %eax
40397e:	e8 1d f0 ff ff       	call   0x4029a0
403983:	8b f0                	mov    %eax,%esi
403985:	89 37                	mov    %esi,(%edi)
403987:	f6 c3 01             	test   $0x1,%bl
40398a:	74 08                	je     0x403994
40398c:	8d 4d bc             	lea    -0x44(%ebp),%ecx
40398f:	e8 3c f6 ff ff       	call   0x402fd0
403994:	8b 4d f4             	mov    -0xc(%ebp),%ecx
403997:	6a 02                	push   $0x2
403999:	58                   	pop    %eax
40399a:	5f                   	pop    %edi
40399b:	5e                   	pop    %esi
40399c:	5b                   	pop    %ebx
40399d:	64 89 0d 00 00 00 00 	mov    %ecx,%fs:0x0
4039a4:	8b e5                	mov    %ebp,%esp
4039a6:	5d                   	pop    %ebp
4039a7:	c3                   	ret
4039a8:	55                   	push   %ebp
4039a9:	8b ec                	mov    %esp,%ebp
4039ab:	83 ec 10             	sub    $0x10,%esp
4039ae:	8d 45 f0             	lea    -0x10(%ebp),%eax
4039b1:	56                   	push   %esi
4039b2:	57                   	push   %edi
4039b3:	50                   	push   %eax
4039b4:	e8 e0 1f 00 00       	call   0x405999
4039b9:	8b f0                	mov    %eax,%esi
4039bb:	8b 45 08             	mov    0x8(%ebp),%eax
4039be:	8b f8                	mov    %eax,%edi
4039c0:	59                   	pop    %ecx
4039c1:	a5                   	movsl  %ds:(%esi),%es:(%edi)
4039c2:	a5                   	movsl  %ds:(%esi),%es:(%edi)
4039c3:	a5                   	movsl  %ds:(%esi),%es:(%edi)
4039c4:	a5                   	movsl  %ds:(%esi),%es:(%edi)
4039c5:	5f                   	pop    %edi
4039c6:	5e                   	pop    %esi
4039c7:	8b e5                	mov    %ebp,%esp
4039c9:	5d                   	pop    %ebp
4039ca:	c2 04 00             	ret    $0x4
4039cd:	55                   	push   %ebp
4039ce:	8b ec                	mov    %esp,%ebp
4039d0:	83 ec 2c             	sub    $0x2c,%esp
4039d3:	8d 45 d4             	lea    -0x2c(%ebp),%eax
4039d6:	56                   	push   %esi
4039d7:	57                   	push   %edi
4039d8:	50                   	push   %eax
4039d9:	e8 26 20 00 00       	call   0x405a04
4039de:	59                   	pop    %ecx
4039df:	6a 0b                	push   $0xb
4039e1:	8b f0                	mov    %eax,%esi
4039e3:	8b 45 08             	mov    0x8(%ebp),%eax
4039e6:	59                   	pop    %ecx
4039e7:	8b f8                	mov    %eax,%edi
4039e9:	f3 a5                	rep movsl %ds:(%esi),%es:(%edi)
4039eb:	5f                   	pop    %edi
4039ec:	5e                   	pop    %esi
4039ed:	8b e5                	mov    %ebp,%esp
4039ef:	5d                   	pop    %ebp
4039f0:	c2 04 00             	ret    $0x4
4039f3:	8b 49 04             	mov    0x4(%ecx),%ecx
4039f6:	56                   	push   %esi
4039f7:	8b 74 24 08          	mov    0x8(%esp),%esi
4039fb:	57                   	push   %edi
4039fc:	33 ff                	xor    %edi,%edi
4039fe:	3b 71 0c             	cmp    0xc(%ecx),%esi
403a01:	73 08                	jae    0x403a0b
403a03:	8b 41 08             	mov    0x8(%ecx),%eax
403a06:	8b 04 b0             	mov    (%eax,%esi,4),%eax
403a09:	eb 02                	jmp    0x403a0d
403a0b:	8b c7                	mov    %edi,%eax
403a0d:	85 c0                	test   %eax,%eax
403a0f:	75 17                	jne    0x403a28
403a11:	38 41 14             	cmp    %al,0x14(%ecx)
403a14:	74 12                	je     0x403a28
403a16:	e8 da 24 00 00       	call   0x405ef5
403a1b:	3b 70 0c             	cmp    0xc(%eax),%esi
403a1e:	73 06                	jae    0x403a26
403a20:	8b 40 08             	mov    0x8(%eax),%eax
403a23:	8b 3c b0             	mov    (%eax,%esi,4),%edi
403a26:	8b c7                	mov    %edi,%eax
403a28:	5f                   	pop    %edi
403a29:	5e                   	pop    %esi
403a2a:	c2 04 00             	ret    $0x4
403a2d:	53                   	push   %ebx
403a2e:	8b 5c 24 08          	mov    0x8(%esp),%ebx
403a32:	8b cb                	mov    %ebx,%ecx
403a34:	c1 e1 02             	shl    $0x2,%ecx
403a37:	8b c3                	mov    %ebx,%eax
403a39:	f7 d1                	not    %ecx
403a3b:	83 e1 04             	and    $0x4,%ecx
403a3e:	8b d1                	mov    %ecx,%edx
403a40:	83 ca 02             	or     $0x2,%edx
403a43:	24 02                	and    $0x2,%al
403a45:	8b c3                	mov    %ebx,%eax
403a47:	0f 45 d1             	cmovne %ecx,%edx
403a4a:	8b ca                	mov    %edx,%ecx
403a4c:	83 c9 08             	or     $0x8,%ecx
403a4f:	24 08                	and    $0x8,%al
403a51:	0f 44 ca             	cmove  %edx,%ecx
403a54:	8b c1                	mov    %ecx,%eax
403a56:	83 c8 10             	or     $0x10,%eax
403a59:	80 e3 04             	and    $0x4,%bl
403a5c:	5b                   	pop    %ebx
403a5d:	0f 44 c1             	cmove  %ecx,%eax
403a60:	c2 04 00             	ret    $0x4
403a63:	8b 41 1c             	mov    0x1c(%ecx),%eax
403a66:	33 d2                	xor    %edx,%edx
403a68:	39 10                	cmp    %edx,(%eax)
403a6a:	74 05                	je     0x403a71
403a6c:	8b 41 2c             	mov    0x2c(%ecx),%eax
403a6f:	8b 10                	mov    (%eax),%edx
403a71:	8b c2                	mov    %edx,%eax
403a73:	99                   	cltd
403a74:	c3                   	ret
403a75:	8b 41 2c             	mov    0x2c(%ecx),%eax
403a78:	ff 08                	decl   (%eax)
403a7a:	8b 51 1c             	mov    0x1c(%ecx),%edx
403a7d:	8b 02                	mov    (%edx),%eax
403a7f:	8d 48 02             	lea    0x2(%eax),%ecx
403a82:	89 0a                	mov    %ecx,(%edx)
403a84:	c3                   	ret
403a85:	56                   	push   %esi
403a86:	57                   	push   %edi
403a87:	8b f9                	mov    %ecx,%edi
403a89:	e8 83 0d 00 00       	call   0x404811
403a8e:	8b 74 24 0c          	mov    0xc(%esp),%esi
403a92:	8b cf                	mov    %edi,%ecx
403a94:	3b c6                	cmp    %esi,%eax
403a96:	72 62                	jb     0x403afa
403a98:	e8 c3 02 00 00       	call   0x403d60
403a9d:	39 30                	cmp    %esi,(%eax)
403a9f:	73 13                	jae    0x403ab4
403aa1:	8b cf                	mov    %edi,%ecx
403aa3:	e8 c1 02 00 00       	call   0x403d69
403aa8:	8b cf                	mov    %edi,%ecx
403aaa:	ff 30                	push   (%eax)
403aac:	56                   	push   %esi
403aad:	e8 e0 fb ff ff       	call   0x403692
403ab2:	eb 3c                	jmp    0x403af0
403ab4:	80 7c 24 10 00       	cmpb   $0x0,0x10(%esp)
403ab9:	74 29                	je     0x403ae4
403abb:	83 fe 10             	cmp    $0x10,%esi
403abe:	73 24                	jae    0x403ae4
403ac0:	8b cf                	mov    %edi,%ecx
403ac2:	e8 a2 02 00 00       	call   0x403d69
403ac7:	3b 30                	cmp    (%eax),%esi
403ac9:	73 04                	jae    0x403acf
403acb:	8b c6                	mov    %esi,%eax
403acd:	eb 09                	jmp    0x403ad8
403acf:	8b cf                	mov    %edi,%ecx
403ad1:	e8 93 02 00 00       	call   0x403d69
403ad6:	8b 00                	mov    (%eax),%eax
403ad8:	50                   	push   %eax
403ad9:	6a 01                	push   $0x1
403adb:	8b cf                	mov    %edi,%ecx
403add:	e8 58 03 00 00       	call   0x403e3a
403ae2:	eb 0c                	jmp    0x403af0
403ae4:	85 f6                	test   %esi,%esi
403ae6:	75 0a                	jne    0x403af2
403ae8:	56                   	push   %esi
403ae9:	8b cf                	mov    %edi,%ecx
403aeb:	e8 e3 fd ff ff       	call   0x4038d3
403af0:	85 f6                	test   %esi,%esi
403af2:	5f                   	pop    %edi
403af3:	0f 95 c0             	setne  %al
403af6:	5e                   	pop    %esi
403af7:	c2 08 00             	ret    $0x8
403afa:	e8 b0 04 00 00       	call   0x403faf
403aff:	cc                   	int3
403b00:	f0 ff 41 04          	lock incl 0x4(%ecx)
403b04:	c3                   	ret
403b05:	56                   	push   %esi
403b06:	8b f1                	mov    %ecx,%esi
403b08:	57                   	push   %edi
403b09:	33 ff                	xor    %edi,%edi
403b0b:	57                   	push   %edi
403b0c:	8d 46 04             	lea    0x4(%esi),%eax
403b0f:	89 46 0c             	mov    %eax,0xc(%esi)
403b12:	8d 46 08             	lea    0x8(%esi),%eax
403b15:	89 46 10             	mov    %eax,0x10(%esi)
403b18:	8d 46 14             	lea    0x14(%esi),%eax
403b1b:	89 46 1c             	mov    %eax,0x1c(%esi)
403b1e:	8d 46 18             	lea    0x18(%esi),%eax
403b21:	89 46 20             	mov    %eax,0x20(%esi)
403b24:	8d 46 24             	lea    0x24(%esi),%eax
403b27:	89 46 2c             	mov    %eax,0x2c(%esi)
403b2a:	8d 46 28             	lea    0x28(%esi),%eax
403b2d:	57                   	push   %edi
403b2e:	89 46 30             	mov    %eax,0x30(%esi)
403b31:	e8 39 15 00 00       	call   0x40506f
403b36:	57                   	push   %edi
403b37:	57                   	push   %edi
403b38:	57                   	push   %edi
403b39:	8b ce                	mov    %esi,%ecx
403b3b:	e8 e7 14 00 00       	call   0x405027
403b40:	5f                   	pop    %edi
403b41:	5e                   	pop    %esi
403b42:	c3                   	ret
403b43:	8b 44 24 0c          	mov    0xc(%esp),%eax
403b47:	53                   	push   %ebx
403b48:	8b 5c 24 0c          	mov    0xc(%esp),%ebx
403b4c:	56                   	push   %esi
403b4d:	8b f1                	mov    %ecx,%esi
403b4f:	83 66 38 00          	andl   $0x0,0x38(%esi)
403b53:	89 46 3c             	mov    %eax,0x3c(%esi)
403b56:	85 db                	test   %ebx,%ebx
403b58:	74 6a                	je     0x403bc4
403b5a:	83 e0 06             	and    $0x6,%eax
403b5d:	3c 06                	cmp    $0x6,%al
403b5f:	74 63                	je     0x403bc4
403b61:	57                   	push   %edi
403b62:	53                   	push   %ebx
403b63:	8d 4e 40             	lea    0x40(%esi),%ecx
403b66:	e8 6f 04 00 00       	call   0x403fda
403b6b:	53                   	push   %ebx
403b6c:	ff 74 24 14          	push   0x14(%esp)
403b70:	8b f8                	mov    %eax,%edi
403b72:	57                   	push   %edi
403b73:	e8 a6 07 00 00       	call   0x40431e
403b78:	83 c4 0c             	add    $0xc,%esp
403b7b:	8d 1c 5f             	lea    (%edi,%ebx,2),%ebx
403b7e:	f6 46 3c 04          	testb  $0x4,0x3c(%esi)
403b82:	89 5e 38             	mov    %ebx,0x38(%esi)
403b85:	75 0a                	jne    0x403b91
403b87:	53                   	push   %ebx
403b88:	57                   	push   %edi
403b89:	57                   	push   %edi
403b8a:	8b ce                	mov    %esi,%ecx
403b8c:	e8 96 14 00 00       	call   0x405027
403b91:	f6 46 3c 02          	testb  $0x2,0x3c(%esi)
403b95:	75 28                	jne    0x403bbf
403b97:	f6 46 3c 18          	testb  $0x18,0x3c(%esi)
403b9b:	8b c7                	mov    %edi,%eax
403b9d:	53                   	push   %ebx
403b9e:	0f 45 c3             	cmovne %ebx,%eax
403ba1:	8b ce                	mov    %esi,%ecx
403ba3:	50                   	push   %eax
403ba4:	57                   	push   %edi
403ba5:	e8 a1 14 00 00       	call   0x40504b
403baa:	8b ce                	mov    %esi,%ecx
403bac:	e8 a3 0b 00 00       	call   0x404754
403bb1:	85 c0                	test   %eax,%eax
403bb3:	75 0a                	jne    0x403bbf
403bb5:	57                   	push   %edi
403bb6:	50                   	push   %eax
403bb7:	57                   	push   %edi
403bb8:	8b ce                	mov    %esi,%ecx
403bba:	e8 68 14 00 00       	call   0x405027
403bbf:	83 4e 3c 01          	orl    $0x1,0x3c(%esi)
403bc3:	5f                   	pop    %edi
403bc4:	5e                   	pop    %esi
403bc5:	5b                   	pop    %ebx
403bc6:	c2 0c 00             	ret    $0xc
403bc9:	55                   	push   %ebp
403bca:	8b ec                	mov    %esp,%ebp
403bcc:	83 ec 3c             	sub    $0x3c,%esp
403bcf:	8d 45 f0             	lea    -0x10(%ebp),%eax
403bd2:	53                   	push   %ebx
403bd3:	56                   	push   %esi
403bd4:	57                   	push   %edi
403bd5:	8b d9                	mov    %ecx,%ebx
403bd7:	8b 4d 08             	mov    0x8(%ebp),%ecx
403bda:	50                   	push   %eax
403bdb:	e8 c8 fd ff ff       	call   0x4039a8
403be0:	8b 4d 08             	mov    0x8(%ebp),%ecx
403be3:	8d 7b 08             	lea    0x8(%ebx),%edi
403be6:	8b f0                	mov    %eax,%esi
403be8:	8d 45 c4             	lea    -0x3c(%ebp),%eax
403beb:	50                   	push   %eax
403bec:	a5                   	movsl  %ds:(%esi),%es:(%edi)
403bed:	a5                   	movsl  %ds:(%esi),%es:(%edi)
403bee:	a5                   	movsl  %ds:(%esi),%es:(%edi)
403bef:	a5                   	movsl  %ds:(%esi),%es:(%edi)
403bf0:	e8 d8 fd ff ff       	call   0x4039cd
403bf5:	6a 0b                	push   $0xb
403bf7:	59                   	pop    %ecx
403bf8:	8d 7b 18             	lea    0x18(%ebx),%edi
403bfb:	8b f0                	mov    %eax,%esi
403bfd:	f3 a5                	rep movsl %ds:(%esi),%es:(%edi)
403bff:	5f                   	pop    %edi
403c00:	5e                   	pop    %esi
403c01:	5b                   	pop    %ebx
403c02:	8b e5                	mov    %ebp,%esp
403c04:	5d                   	pop    %ebp
403c05:	c2 04 00             	ret    $0x4
403c08:	56                   	push   %esi
403c09:	8b f1                	mov    %ecx,%esi
403c0b:	57                   	push   %edi
403c0c:	33 ff                	xor    %edi,%edi
403c0e:	57                   	push   %edi
403c0f:	89 7e 30             	mov    %edi,0x30(%esi)
403c12:	89 7e 08             	mov    %edi,0x8(%esi)
403c15:	89 7e 10             	mov    %edi,0x10(%esi)
403c18:	c7 46 14 01 02 00 00 	movl   $0x201,0x14(%esi)
403c1f:	c7 46 18 06 00 00 00 	movl   $0x6,0x18(%esi)
403c26:	89 7e 1c             	mov    %edi,0x1c(%esi)
403c29:	89 7e 20             	mov    %edi,0x20(%esi)
403c2c:	89 7e 24             	mov    %edi,0x24(%esi)
403c2f:	89 7e 28             	mov    %edi,0x28(%esi)
403c32:	89 7e 2c             	mov    %edi,0x2c(%esi)
403c35:	e8 4b 06 00 00       	call   0x404285
403c3a:	6a 08                	push   $0x8
403c3c:	e8 5a 2c 00 00       	call   0x40689b
403c41:	59                   	pop    %ecx
403c42:	85 c0                	test   %eax,%eax
403c44:	74 09                	je     0x403c4f
403c46:	8b c8                	mov    %eax,%ecx
403c48:	e8 cb f0 ff ff       	call   0x402d18
403c4d:	8b f8                	mov    %eax,%edi
403c4f:	89 7e 30             	mov    %edi,0x30(%esi)
403c52:	5f                   	pop    %edi
403c53:	5e                   	pop    %esi
403c54:	c3                   	ret
403c55:	89 11                	mov    %edx,(%ecx)
403c57:	c3                   	ret
403c58:	83 7c 24 04 00       	cmpl   $0x0,0x4(%esp)
403c5d:	53                   	push   %ebx
403c5e:	8b d9                	mov    %ecx,%ebx
403c60:	74 29                	je     0x403c8b
403c62:	e8 bd 00 00 00       	call   0x403d24
403c67:	39 44 24 08          	cmp    %eax,0x8(%esp)
403c6b:	72 1e                	jb     0x403c8b
403c6d:	56                   	push   %esi
403c6e:	8b cb                	mov    %ebx,%ecx
403c70:	e8 f4 00 00 00       	call   0x403d69
403c75:	8b cb                	mov    %ebx,%ecx
403c77:	8b f0                	mov    %eax,%esi
403c79:	e8 a6 00 00 00       	call   0x403d24