403ca7:	ff 75 08             	push   0x8(%ebp)
403caa:	88 1f                	mov    %bl,(%edi)
403cac:	8b c8                	mov    %eax,%ecx
403cae:	8b 16                	mov    (%esi),%edx
403cb0:	57                   	push   %edi
403cb1:	e8 e5 fe ff ff       	call   0x403b9b
403cb6:	8b 4d fc             	mov    -0x4(%ebp),%ecx
403cb9:	84 c0                	test   %al,%al
403cbb:	74 03                	je     0x403cc0
403cbd:	89 79 28             	mov    %edi,0x28(%ecx)
403cc0:	8b 06                	mov    (%esi),%eax
403cc2:	89 45 f8             	mov    %eax,-0x8(%ebp)
403cc5:	8b 78 04             	mov    0x4(%eax),%edi
403cc8:	51                   	push   %ecx
403cc9:	8b 07                	mov    (%edi),%eax
403ccb:	8b 30                	mov    (%eax),%esi
403ccd:	8b ce                	mov    %esi,%ecx
403ccf:	ff 15 f0 e1 40 00    	call   *0x40e1f0
403cd5:	8b cf                	mov    %edi,%ecx
403cd7:	ff d6                	call   *%esi
403cd9:	8b 4d fc             	mov    -0x4(%ebp),%ecx
403cdc:	0a d8                	or     %al,%bl
403cde:	8b 45 f8             	mov    -0x8(%ebp),%eax
403ce1:	88 5d f4             	mov    %bl,-0xc(%ebp)
403ce4:	8b 40 08             	mov    0x8(%eax),%eax
403ce7:	89 45 f8             	mov    %eax,-0x8(%ebp)
403cea:	85 c0                	test   %eax,%eax
403cec:	75 d7                	jne    0x403cc5
403cee:	8b 35 10 d5 40 00    	mov    0x40d510,%esi
403cf4:	85 f6                	test   %esi,%esi
403cf6:	74 10                	je     0x403d08
403cf8:	ff 75 fc             	push   -0x4(%ebp)
403cfb:	8b ce                	mov    %esi,%ecx
403cfd:	ff 75 f4             	push   -0xc(%ebp)
403d00:	ff 15 f0 e1 40 00    	call   *0x40e1f0
403d06:	ff d6                	call   *%esi
403d08:	5f                   	pop    %edi
403d09:	5e                   	pop    %esi
403d0a:	5b                   	pop    %ebx
403d0b:	c9                   	leave
403d0c:	c2 04 00             	ret    $0x4
403d0f:	8b 45 fc             	mov    -0x4(%ebp),%eax
403d12:	83 c6 08             	add    $0x8,%esi
403d15:	eb 88                	jmp    0x403c9f
403d17:	cc                   	int3
403d18:	cc                   	int3
403d19:	cc                   	int3
403d1a:	cc                   	int3
403d1b:	cc                   	int3
403d1c:	cc                   	int3
403d1d:	cc                   	int3
403d1e:	cc                   	int3
403d1f:	cc                   	int3
403d20:	8b ff                	mov    %edi,%edi
403d22:	55                   	push   %ebp
403d23:	8b ec                	mov    %esp,%ebp
403d25:	ff 75 10             	push   0x10(%ebp)
403d28:	8b 55 0c             	mov    0xc(%ebp),%edx
403d2b:	8b 4d 08             	mov    0x8(%ebp),%ecx
403d2e:	e8 20 ff ff ff       	call   0x403c53
403d33:	ff 15 b4 e0 40 00    	call   *0x40e0b4
403d39:	39 05 b8 d5 40 00    	cmp    %eax,0x40d5b8
403d3f:	74 3a                	je     0x403d7b
403d41:	33 c9                	xor    %ecx,%ecx
403d43:	41                   	inc    %ecx
403d44:	f0 0f c1 0d c4 d5 40 	lock xadd %ecx,0x40d5c4
403d4b:	00
403d4c:	41                   	inc    %ecx
403d4d:	83 f9 04             	cmp    $0x4,%ecx
403d50:	7d 22                	jge    0x403d74
403d52:	a3 b8 d5 40 00       	mov    %eax,0x40d5b8
403d57:	e8 bc fd ff ff       	call   0x403b18
403d5c:	85 c0                	test   %eax,%eax
403d5e:	74 0a                	je     0x403d6a
403d60:	ff 75 08             	push   0x8(%ebp)
403d63:	8b c8                	mov    %eax,%ecx
403d65:	e8 e0 fc ff ff       	call   0x403a4a
403d6a:	c7 05 b8 d5 40 00 00 	movl   $0x0,0x40d5b8
403d71:	00 00 00
403d74:	f0 ff 0d c4 d5 40 00 	lock decl 0x40d5c4
403d7b:	5d                   	pop    %ebp
403d7c:	c2 0c 00             	ret    $0xc
403d7f:	a1 b0 d5 40 00       	mov    0x40d5b0,%eax
403d84:	85 c0                	test   %eax,%eax
403d86:	75 10                	jne    0x403d98
403d88:	68 04 17 40 00       	push   $0x401704
403d8d:	ff 15 78 e0 40 00    	call   *0x40e078
403d93:	a3 b0 d5 40 00       	mov    %eax,0x40d5b0
403d98:	c3                   	ret
403d99:	cc                   	int3
403d9a:	cc                   	int3
403d9b:	cc                   	int3
403d9c:	cc                   	int3
403d9d:	cc                   	int3
403d9e:	cc                   	int3
403d9f:	cc                   	int3
403da0:	8b ff                	mov    %edi,%edi
403da2:	56                   	push   %esi
403da3:	8b 35 58 d5 40 00    	mov    0x40d558,%esi
403da9:	85 f6                	test   %esi,%esi
403dab:	75 21                	jne    0x403dce
403dad:	68 18 17 40 00       	push   $0x401718
403db2:	e8 c8 ff ff ff       	call   0x403d7f
403db7:	50                   	push   %eax
403db8:	ff 15 80 e0 40 00    	call   *0x40e080
403dbe:	8b f0                	mov    %eax,%esi
403dc0:	89 35 58 d5 40 00    	mov    %esi,0x40d558
403dc6:	85 f6                	test   %esi,%esi
403dc8:	75 04                	jne    0x403dce
403dca:	32 c0                	xor    %al,%al
403dcc:	5e                   	pop    %esi
403dcd:	c3                   	ret
403dce:	8b ce                	mov    %esi,%ecx
403dd0:	ff 15 f0 e1 40 00    	call   *0x40e1f0
403dd6:	ff d6                	call   *%esi
403dd8:	5e                   	pop    %esi
403dd9:	c3                   	ret
403dda:	cc                   	int3
403ddb:	cc                   	int3
403ddc:	cc                   	int3
403ddd:	cc                   	int3
403dde:	cc                   	int3
403ddf:	cc                   	int3
403de0:	8b ff                	mov    %edi,%edi
403de2:	55                   	push   %ebp
403de3:	8b ec                	mov    %esp,%ebp
403de5:	56                   	push   %esi
403de6:	8b 35 4c d5 40 00    	mov    0x40d54c,%esi
403dec:	85 f6                	test   %esi,%esi
403dee:	75 1d                	jne    0x403e0d
403df0:	68 34 17 40 00       	push   $0x401734
403df5:	e8 85 ff ff ff       	call   0x403d7f
403dfa:	50                   	push   %eax
403dfb:	ff 15 80 e0 40 00    	call   *0x40e080
403e01:	8b f0                	mov    %eax,%esi
403e03:	89 35 4c d5 40 00    	mov    %esi,0x40d54c
403e09:	85 f6                	test   %esi,%esi
403e0b:	74 10                	je     0x403e1d
403e0d:	ff 75 0c             	push   0xc(%ebp)
403e10:	8b ce                	mov    %esi,%ecx
403e12:	ff 75 08             	push   0x8(%ebp)
403e15:	ff 15 f0 e1 40 00    	call   *0x40e1f0
403e1b:	ff d6                	call   *%esi
403e1d:	5e                   	pop    %esi
403e1e:	5d                   	pop    %ebp
403e1f:	c2 08 00             	ret    $0x8
403e22:	8b ff                	mov    %edi,%edi
403e24:	56                   	push   %esi
403e25:	8d 42 0e             	lea    0xe(%edx),%eax
403e28:	50                   	push   %eax
403e29:	8d 42 0c             	lea    0xc(%edx),%eax
403e2c:	50                   	push   %eax
403e2d:	8d 42 0a             	lea    0xa(%edx),%eax
403e30:	50                   	push   %eax
403e31:	8d 72 08             	lea    0x8(%edx),%esi
403e34:	56                   	push   %esi
403e35:	8d 42 06             	lea    0x6(%edx),%eax
403e38:	50                   	push   %eax
403e39:	8d 42 04             	lea    0x4(%edx),%eax
403e3c:	50                   	push   %eax
403e3d:	52                   	push   %edx
403e3e:	68 54 17 40 00       	push   $0x401754
403e43:	51                   	push   %ecx
403e44:	e8 35 6b 00 00       	call   0x40a97e
403e49:	83 c4 24             	add    $0x24,%esp
403e4c:	83 f8 07             	cmp    $0x7,%eax
403e4f:	74 04                	je     0x403e55
403e51:	32 c0                	xor    %al,%al
403e53:	5e                   	pop    %esi
403e54:	c3                   	ret
403e55:	6a 04                	push   $0x4
403e57:	5a                   	pop    %edx
403e58:	66 8b 06             	mov    (%esi),%ax
403e5b:	8a e8                	mov    %al,%ch
403e5d:	8a cc                	mov    %ah,%cl
403e5f:	66 89 0e             	mov    %cx,(%esi)
403e62:	8d 76 02             	lea    0x2(%esi),%esi
403e65:	83 ea 01             	sub    $0x1,%edx
403e68:	75 ee                	jne    0x403e58
403e6a:	b0 01                	mov    $0x1,%al
403e6c:	5e                   	pop    %esi
403e6d:	c3                   	ret
403e6e:	8b ff                	mov    %edi,%edi
403e70:	55                   	push   %ebp
403e71:	8b ec                	mov    %esp,%ebp
403e73:	81 ec a8 00 00 00    	sub    $0xa8,%esp
403e79:	53                   	push   %ebx
403e7a:	56                   	push   %esi
403e7b:	8b d9                	mov    %ecx,%ebx
403e7d:	33 c0                	xor    %eax,%eax
403e7f:	57                   	push   %edi
403e80:	6a 50                	push   $0x50
403e82:	50                   	push   %eax
403e83:	89 43 04             	mov    %eax,0x4(%ebx)
403e86:	89 43 08             	mov    %eax,0x8(%ebx)
403e89:	8d 45 ac             	lea    -0x54(%ebp),%eax
403e8c:	50                   	push   %eax
403e8d:	c7 03 34 10 40 00    	movl   $0x401034,(%ebx)
403e93:	e8 13 6a 00 00       	call   0x40a8ab
403e98:	8b 45 08             	mov    0x8(%ebp),%eax
403e9b:	8d 75 ac             	lea    -0x54(%ebp),%esi
403e9e:	83 c4 0c             	add    $0xc,%esp
403ea1:	89 45 b0             	mov    %eax,-0x50(%ebp)
403ea4:	8d bd 5c ff ff ff    	lea    -0xa4(%ebp),%edi
403eaa:	8d 85 5c ff ff ff    	lea    -0xa4(%ebp),%eax
403eb0:	6a 14                	push   $0x14
403eb2:	59                   	pop    %ecx
403eb3:	f3 a5                	rep movsl %ds:(%esi),%es:(%edi)
403eb5:	8d 4b 0c             	lea    0xc(%ebx),%ecx
403eb8:	33 ff                	xor    %edi,%edi
403eba:	50                   	push   %eax
403ebb:	89 79 50             	mov    %edi,0x50(%ecx)
403ebe:	89 79 54             	mov    %edi,0x54(%ecx)
403ec1:	e8 ba ee ff ff       	call   0x402d80
403ec6:	6b 35 ec d4 40 00 44 	imul   $0x44,0x40d4ec,%esi
403ecd:	a1 ec d4 40 00       	mov    0x40d4ec,%eax
403ed2:	89 7b 64             	mov    %edi,0x64(%ebx)
403ed5:	89 7b 68             	mov    %edi,0x68(%ebx)
403ed8:	c7 03 34 10 40 00    	movl   $0x401034,(%ebx)
403ede:	81 c6 08 d6 40 00    	add    $0x40d608,%esi
403ee4:	40                   	inc    %eax
403ee5:	83 e0 03             	and    $0x3,%eax
403ee8:	57                   	push   %edi
403ee9:	a3 ec d4 40 00       	mov    %eax,0x40d4ec
403eee:	8d 46 04             	lea    0x4(%esi),%eax
403ef1:	50                   	push   %eax
403ef2:	6a 10                	push   $0x10
403ef4:	6a 01                	push   $0x1
403ef6:	ff 15 e8 e1 40 00    	call   *0x40e1e8
403efc:	0f b7 c0             	movzwl %ax,%eax
403eff:	5f                   	pop    %edi
403f00:	89 06                	mov    %eax,(%esi)
403f02:	8b c3                	mov    %ebx,%eax
403f04:	5e                   	pop    %esi
403f05:	5b                   	pop    %ebx
403f06:	c9                   	leave
403f07:	c2 04 00             	ret    $0x4
403f0a:	cc                   	int3
403f0b:	cc                   	int3
403f0c:	cc                   	int3
403f0d:	cc                   	int3
403f0e:	cc                   	int3
403f0f:	cc                   	int3
403f10:	e9 fb f0 ff ff       	jmp    0x403010
403f15:	8b ff                	mov    %edi,%edi
403f17:	55                   	push   %ebp
403f18:	8b ec                	mov    %esp,%ebp
403f1a:	8b 45 08             	mov    0x8(%ebp),%eax
403f1d:	56                   	push   %esi
403f1e:	8b f1                	mov    %ecx,%esi
403f20:	85 c0                	test   %eax,%eax
403f22:	7e 08                	jle    0x403f2c
403f24:	0f b7 c0             	movzwl %ax,%eax
403f27:	0d 00 00 07 80       	or     $0x80070000,%eax
403f2c:	50                   	push   %eax
403f2d:	e8 3c ff ff ff       	call   0x403e6e
403f32:	c7 06 34 10 40 00    	movl   $0x401034,(%esi)
403f38:	8b c6                	mov    %esi,%eax
403f3a:	5e                   	pop    %esi
403f3b:	5d                   	pop    %ebp
403f3c:	c2 04 00             	ret    $0x4
403f3f:	8b ff                	mov    %edi,%edi
403f41:	55                   	push   %ebp
403f42:	8b ec                	mov    %esp,%ebp
403f44:	83 ec 6c             	sub    $0x6c,%esp
403f47:	ff 15 44 e0 40 00    	call   *0x40e044
403f4d:	50                   	push   %eax
403f4e:	8d 4d 94             	lea    -0x6c(%ebp),%ecx
403f51:	e8 bf ff ff ff       	call   0x403f15
403f56:	68 f0 c6 40 00       	push   $0x40c6f0
403f5b:	8d 45 94             	lea    -0x6c(%ebp),%eax
403f5e:	50                   	push   %eax
403f5f:	e8 d6 6b 00 00       	call   0x40ab3a
403f64:	cc                   	int3
403f65:	cc                   	int3
403f66:	cc                   	int3
403f67:	cc                   	int3
403f68:	cc                   	int3
403f69:	cc                   	int3
403f6a:	cc                   	int3
403f6b:	cc                   	int3
403f6c:	cc                   	int3
403f6d:	cc                   	int3
403f6e:	cc                   	int3
403f6f:	cc                   	int3
403f70:	8b ff                	mov    %edi,%edi
403f72:	55                   	push   %ebp
403f73:	8b ec                	mov    %esp,%ebp
403f75:	56                   	push   %esi
403f76:	ff 75 08             	push   0x8(%ebp)
403f79:	8b f1                	mov    %ecx,%esi
403f7b:	e8 20 f1 ff ff       	call   0x4030a0
403f80:	c7 06 34 10 40 00    	movl   $0x401034,(%esi)
403f86:	8b c6                	mov    %esi,%eax
403f88:	5e                   	pop    %esi
403f89:	5d                   	pop    %ebp
403f8a:	c2 04 00             	ret    $0x4
403f8d:	8b ff                	mov    %edi,%edi
403f8f:	55                   	push   %ebp
403f90:	8b ec                	mov    %esp,%ebp
403f92:	6a 00                	push   $0x0
403f94:	51                   	push   %ecx
403f95:	52                   	push   %edx
403f96:	6a 2b                	push   $0x2b
403f98:	ff 75 0c             	push   0xc(%ebp)
403f9b:	ff 75 08             	push   0x8(%ebp)
403f9e:	ff 15 dc e1 40 00    	call   *0x40e1dc
403fa4:	83 c4 18             	add    $0x18,%esp
403fa7:	5d                   	pop    %ebp
403fa8:	c2 08 00             	ret    $0x8
403fab:	8b ff                	mov    %edi,%edi
403fad:	55                   	push   %ebp
403fae:	8b ec                	mov    %esp,%ebp
403fb0:	6a 00                	push   $0x0
403fb2:	6a 04                	push   $0x4
403fb4:	8d 45 10             	lea    0x10(%ebp),%eax
403fb7:	50                   	push   %eax
403fb8:	51                   	push   %ecx
403fb9:	52                   	push   %edx
403fba:	6a 2b                	push   $0x2b
403fbc:	ff 75 0c             	push   0xc(%ebp)
403fbf:	ff 75 08             	push   0x8(%ebp)
403fc2:	ff 15 dc e1 40 00    	call   *0x40e1dc
403fc8:	83 c4 20             	add    $0x20,%esp
403fcb:	5d                   	pop    %ebp
403fcc:	c2 0c 00             	ret    $0xc
403fcf:	8b ff                	mov    %edi,%edi
403fd1:	56                   	push   %esi
403fd2:	8b f1                	mov    %ecx,%esi
403fd4:	57                   	push   %edi
403fd5:	8b fa                	mov    %edx,%edi
403fd7:	83 fe 03             	cmp    $0x3,%esi
403fda:	7c 51                	jl     0x40402d
403fdc:	8b 4f 04             	mov    0x4(%edi),%ecx
403fdf:	ba e0 d5 40 00       	mov    $0x40d5e0,%edx
403fe4:	e8 39 fe ff ff       	call   0x403e22
403fe9:	84 c0                	test   %al,%al
403feb:	74 40                	je     0x40402d
403fed:	68 5c d5 40 00       	push   $0x40d55c
403ff2:	68 94 17 40 00       	push   $0x401794
403ff7:	ff 77 08             	push   0x8(%edi)
403ffa:	e8 7f 69 00 00       	call   0x40a97e
403fff:	83 c4 0c             	add    $0xc,%esp
404002:	83 f8 01             	cmp    $0x1,%eax
404005:	75 26                	jne    0x40402d
404007:	83 fe 03             	cmp    $0x3,%esi
40400a:	7e 1d                	jle    0x404029
40400c:	8b 4f 0c             	mov    0xc(%edi),%ecx
40400f:	ba d0 d5 40 00       	mov    $0x40d5d0,%edx
404014:	e8 09 fe ff ff       	call   0x403e22