40ec4a:	6a f7                	push   $0xfffffff7
40ec4c:	59                   	pop    %ecx
40ec4d:	83 c0 0c             	add    $0xc,%eax
40ec50:	f0 21 08             	lock and %ecx,(%eax)
40ec53:	8b 45 0c             	mov    0xc(%ebp),%eax
40ec56:	83 60 08 00          	andl   $0x0,0x8(%eax)
40ec5a:	8b 45 0c             	mov    0xc(%ebp),%eax
40ec5d:	8b 40 0c             	mov    0xc(%eax),%eax
40ec60:	a9 c0 04 00 00       	test   $0x4c0,%eax
40ec65:	75 33                	jne    0x40ec9a
40ec67:	56                   	push   %esi
40ec68:	8b 75 0c             	mov    0xc(%ebp),%esi
40ec6b:	6a 01                	push   $0x1
40ec6d:	e8 5c ca ff ff       	call   0x40b6ce
40ec72:	59                   	pop    %ecx
40ec73:	3b f0                	cmp    %eax,%esi
40ec75:	74 0e                	je     0x40ec85
40ec77:	8b 75 0c             	mov    0xc(%ebp),%esi
40ec7a:	53                   	push   %ebx
40ec7b:	e8 4e ca ff ff       	call   0x40b6ce
40ec80:	59                   	pop    %ecx
40ec81:	3b f0                	cmp    %eax,%esi
40ec83:	75 0b                	jne    0x40ec90
40ec85:	57                   	push   %edi
40ec86:	e8 df 47 00 00       	call   0x41346a
40ec8b:	59                   	pop    %ecx
40ec8c:	85 c0                	test   %eax,%eax
40ec8e:	75 09                	jne    0x40ec99
40ec90:	ff 75 0c             	push   0xc(%ebp)
40ec93:	e8 47 64 00 00       	call   0x4150df
40ec98:	59                   	pop    %ecx
40ec99:	5e                   	pop    %esi
40ec9a:	ff 75 0c             	push   0xc(%ebp)
40ec9d:	8b 5d 08             	mov    0x8(%ebp),%ebx
40eca0:	53                   	push   %ebx
40eca1:	e8 1e 00 00 00       	call   0x40ecc4
40eca6:	59                   	pop    %ecx
40eca7:	59                   	pop    %ecx
40eca8:	84 c0                	test   %al,%al
40ecaa:	75 11                	jne    0x40ecbd
40ecac:	8b 45 0c             	mov    0xc(%ebp),%eax
40ecaf:	6a 10                	push   $0x10
40ecb1:	59                   	pop    %ecx
40ecb2:	83 c0 0c             	add    $0xc,%eax
40ecb5:	f0 09 08             	lock or %ecx,(%eax)
40ecb8:	83 c8 ff             	or     $0xffffffff,%eax
40ecbb:	eb 03                	jmp    0x40ecc0
40ecbd:	0f b6 c3             	movzbl %bl,%eax
40ecc0:	5b                   	pop    %ebx
40ecc1:	5f                   	pop    %edi
40ecc2:	5d                   	pop    %ebp
40ecc3:	c3                   	ret
40ecc4:	8b ff                	mov    %edi,%edi
40ecc6:	55                   	push   %ebp
40ecc7:	8b ec                	mov    %esp,%ebp
40ecc9:	56                   	push   %esi
40ecca:	57                   	push   %edi
40eccb:	ff 75 0c             	push   0xc(%ebp)
40ecce:	e8 0d c9 ff ff       	call   0x40b5e0
40ecd3:	59                   	pop    %ecx
40ecd4:	8b 4d 0c             	mov    0xc(%ebp),%ecx
40ecd7:	8b d0                	mov    %eax,%edx
40ecd9:	8b 49 0c             	mov    0xc(%ecx),%ecx
40ecdc:	f6 c1 c0             	test   $0xc0,%cl
40ecdf:	0f 84 92 00 00 00    	je     0x40ed77
40ece5:	8b 4d 0c             	mov    0xc(%ebp),%ecx
40ece8:	33 ff                	xor    %edi,%edi
40ecea:	8b 41 04             	mov    0x4(%ecx),%eax
40eced:	8b 31                	mov    (%ecx),%esi
40ecef:	2b f0                	sub    %eax,%esi
40ecf1:	40                   	inc    %eax
40ecf2:	89 01                	mov    %eax,(%ecx)
40ecf4:	8b 45 0c             	mov    0xc(%ebp),%eax
40ecf7:	8b 48 18             	mov    0x18(%eax),%ecx
40ecfa:	49                   	dec    %ecx
40ecfb:	89 48 08             	mov    %ecx,0x8(%eax)
40ecfe:	85 f6                	test   %esi,%esi
40ed00:	7e 26                	jle    0x40ed28
40ed02:	8b 45 0c             	mov    0xc(%ebp),%eax
40ed05:	56                   	push   %esi
40ed06:	ff 70 04             	push   0x4(%eax)
40ed09:	52                   	push   %edx
40ed0a:	e8 ad fb ff ff       	call   0x40e8bc
40ed0f:	83 c4 0c             	add    $0xc,%esp
40ed12:	8b f8                	mov    %eax,%edi
40ed14:	8b 45 0c             	mov    0xc(%ebp),%eax
40ed17:	8b 48 04             	mov    0x4(%eax),%ecx
40ed1a:	8a 45 08             	mov    0x8(%ebp),%al
40ed1d:	88 01                	mov    %al,(%ecx)
40ed1f:	33 c0                	xor    %eax,%eax
40ed21:	3b fe                	cmp    %esi,%edi
40ed23:	0f 94 c0             	sete   %al
40ed26:	eb 64                	jmp    0x40ed8c
40ed28:	83 fa ff             	cmp    $0xffffffff,%edx
40ed2b:	74 1b                	je     0x40ed48
40ed2d:	83 fa fe             	cmp    $0xfffffffe,%edx
40ed30:	74 16                	je     0x40ed48
40ed32:	8b c2                	mov    %edx,%eax
40ed34:	8b ca                	mov    %edx,%ecx
40ed36:	83 e0 3f             	and    $0x3f,%eax
40ed39:	c1 f9 06             	sar    $0x6,%ecx
40ed3c:	6b c0 30             	imul   $0x30,%eax,%eax
40ed3f:	03 04 8d c0 41 42 00 	add    0x4241c0(,%ecx,4),%eax
40ed46:	eb 05                	jmp    0x40ed4d
40ed48:	b8 d0 31 42 00       	mov    $0x4231d0,%eax
40ed4d:	f6 40 28 20          	testb  $0x20,0x28(%eax)
40ed51:	74 c1                	je     0x40ed14
40ed53:	6a 02                	push   $0x2
40ed55:	57                   	push   %edi
40ed56:	57                   	push   %edi
40ed57:	52                   	push   %edx
40ed58:	e8 99 f5 ff ff       	call   0x40e2f6
40ed5d:	23 c2                	and    %edx,%eax
40ed5f:	83 c4 10             	add    $0x10,%esp
40ed62:	83 f8 ff             	cmp    $0xffffffff,%eax
40ed65:	75 ad                	jne    0x40ed14
40ed67:	8b 45 0c             	mov    0xc(%ebp),%eax
40ed6a:	6a 10                	push   $0x10
40ed6c:	59                   	pop    %ecx
40ed6d:	83 c0 0c             	add    $0xc,%eax
40ed70:	f0 09 08             	lock or %ecx,(%eax)
40ed73:	b0 01                	mov    $0x1,%al
40ed75:	eb 15                	jmp    0x40ed8c
40ed77:	6a 01                	push   $0x1
40ed79:	8d 45 08             	lea    0x8(%ebp),%eax
40ed7c:	50                   	push   %eax
40ed7d:	52                   	push   %edx
40ed7e:	e8 39 fb ff ff       	call   0x40e8bc
40ed83:	83 c4 0c             	add    $0xc,%esp
40ed86:	48                   	dec    %eax
40ed87:	f7 d8                	neg    %eax
40ed89:	1b c0                	sbb    %eax,%eax
40ed8b:	40                   	inc    %eax
40ed8c:	5f                   	pop    %edi
40ed8d:	5e                   	pop    %esi
40ed8e:	5d                   	pop    %ebp
40ed8f:	c3                   	ret
40ed90:	8b ff                	mov    %edi,%edi
40ed92:	55                   	push   %ebp
40ed93:	8b ec                	mov    %esp,%ebp
40ed95:	5d                   	pop    %ebp
40ed96:	e9 18 fe ff ff       	jmp    0x40ebb3
40ed9b:	8b ff                	mov    %edi,%edi
40ed9d:	55                   	push   %ebp
40ed9e:	8b ec                	mov    %esp,%ebp
40eda0:	b8 ff ff 00 00       	mov    $0xffff,%eax
40eda5:	83 ec 18             	sub    $0x18,%esp
40eda8:	66 39 45 08          	cmp    %ax,0x8(%ebp)
40edac:	0f 84 ae 00 00 00    	je     0x40ee60
40edb2:	ff 75 0c             	push   0xc(%ebp)
40edb5:	8d 4d e8             	lea    -0x18(%ebp),%ecx
40edb8:	e8 f4 68 ff ff       	call   0x4056b1
40edbd:	8b 45 ec             	mov    -0x14(%ebp),%eax
40edc0:	8b 80 a8 00 00 00    	mov    0xa8(%eax),%eax
40edc6:	85 c0                	test   %eax,%eax
40edc8:	75 21                	jne    0x40edeb
40edca:	8b 4d 08             	mov    0x8(%ebp),%ecx
40edcd:	8d 41 bf             	lea    -0x41(%ecx),%eax
40edd0:	66 83 f8 19          	cmp    $0x19,%ax
40edd4:	77 0d                	ja     0x40ede3
40edd6:	66 83 c1 20          	add    $0x20,%cx
40edda:	0f b7 c1             	movzwl %cx,%eax
40eddd:	89 45 f8             	mov    %eax,-0x8(%ebp)
40ede0:	66 8b c8             	mov    %ax,%cx
40ede3:	0f b7 c1             	movzwl %cx,%eax
40ede6:	89 45 f8             	mov    %eax,-0x8(%ebp)
40ede9:	eb 1f                	jmp    0x40ee0a
40edeb:	ba 00 01 00 00       	mov    $0x100,%edx
40edf0:	6a 01                	push   $0x1
40edf2:	66 39 55 08          	cmp    %dx,0x8(%ebp)
40edf6:	73 30                	jae    0x40ee28
40edf8:	ff 75 08             	push   0x8(%ebp)
40edfb:	e8 c6 28 00 00       	call   0x4116c6
40ee00:	59                   	pop    %ecx
40ee01:	59                   	pop    %ecx
40ee02:	85 c0                	test   %eax,%eax
40ee04:	75 09                	jne    0x40ee0f
40ee06:	66 8b 45 08          	mov    0x8(%ebp),%ax
40ee0a:	0f b7 c0             	movzwl %ax,%eax
40ee0d:	eb 11                	jmp    0x40ee20
40ee0f:	8b 45 ec             	mov    -0x14(%ebp),%eax
40ee12:	0f b7 4d 08          	movzwl 0x8(%ebp),%ecx
40ee16:	8b 80 94 00 00 00    	mov    0x94(%eax),%eax
40ee1c:	0f b6 04 08          	movzbl (%eax,%ecx,1),%eax
40ee20:	0f b7 c0             	movzwl %ax,%eax
40ee23:	89 45 f8             	mov    %eax,-0x8(%ebp)
40ee26:	eb 1c                	jmp    0x40ee44
40ee28:	8d 4d fc             	lea    -0x4(%ebp),%ecx
40ee2b:	51                   	push   %ecx
40ee2c:	6a 01                	push   $0x1
40ee2e:	8d 4d 08             	lea    0x8(%ebp),%ecx
40ee31:	51                   	push   %ecx
40ee32:	52                   	push   %edx
40ee33:	50                   	push   %eax
40ee34:	e8 03 63 00 00       	call   0x41513c
40ee39:	83 c4 18             	add    $0x18,%esp
40ee3c:	85 c0                	test   %eax,%eax
40ee3e:	75 0c                	jne    0x40ee4c
40ee40:	66 8b 45 08          	mov    0x8(%ebp),%ax
40ee44:	0f b7 c0             	movzwl %ax,%eax
40ee47:	89 45 f8             	mov    %eax,-0x8(%ebp)
40ee4a:	eb 04                	jmp    0x40ee50
40ee4c:	66 8b 45 fc          	mov    -0x4(%ebp),%ax
40ee50:	80 7d f4 00          	cmpb   $0x0,-0xc(%ebp)
40ee54:	74 0a                	je     0x40ee60
40ee56:	8b 4d e8             	mov    -0x18(%ebp),%ecx
40ee59:	83 a1 50 03 00 00 fd 	andl   $0xfffffffd,0x350(%ecx)
40ee60:	8b e5                	mov    %ebp,%esp
40ee62:	5d                   	pop    %ebp
40ee63:	c3                   	ret
40ee64:	8b ff                	mov    %edi,%edi
40ee66:	56                   	push   %esi
40ee67:	57                   	push   %edi
40ee68:	bf 68 45 42 00       	mov    $0x424568,%edi
40ee6d:	33 f6                	xor    %esi,%esi
40ee6f:	6a 00                	push   $0x0
40ee71:	68 a0 0f 00 00       	push   $0xfa0
40ee76:	57                   	push   %edi
40ee77:	e8 cc d1 ff ff       	call   0x40c048
40ee7c:	85 c0                	test   %eax,%eax
40ee7e:	74 18                	je     0x40ee98
40ee80:	ff 05 a0 46 42 00    	incl   0x4246a0
40ee86:	83 c6 18             	add    $0x18,%esi
40ee89:	83 c7 18             	add    $0x18,%edi
40ee8c:	81 fe 38 01 00 00    	cmp    $0x138,%esi
40ee92:	72 db                	jb     0x40ee6f
40ee94:	b0 01                	mov    $0x1,%al
40ee96:	eb 0a                	jmp    0x40eea2
40ee98:	6a 00                	push   $0x0
40ee9a:	e8 1d 00 00 00       	call   0x40eebc
40ee9f:	59                   	pop    %ecx
40eea0:	32 c0                	xor    %al,%al
40eea2:	5f                   	pop    %edi
40eea3:	5e                   	pop    %esi
40eea4:	c3                   	ret
40eea5:	8b ff                	mov    %edi,%edi
40eea7:	55                   	push   %ebp
40eea8:	8b ec                	mov    %esp,%ebp
40eeaa:	6b 45 08 18          	imul   $0x18,0x8(%ebp),%eax
40eeae:	05 68 45 42 00       	add    $0x424568,%eax
40eeb3:	50                   	push   %eax
40eeb4:	ff 15 2c b0 41 00    	call   *0x41b02c
40eeba:	5d                   	pop    %ebp
40eebb:	c3                   	ret
40eebc:	8b ff                	mov    %edi,%edi
40eebe:	56                   	push   %esi
40eebf:	8b 35 a0 46 42 00    	mov    0x4246a0,%esi
40eec5:	85 f6                	test   %esi,%esi
40eec7:	74 20                	je     0x40eee9
40eec9:	6b c6 18             	imul   $0x18,%esi,%eax
40eecc:	57                   	push   %edi
40eecd:	8d b8 50 45 42 00    	lea    0x424550(%eax),%edi
40eed3:	57                   	push   %edi
40eed4:	ff 15 40 b0 41 00    	call   *0x41b040
40eeda:	ff 0d a0 46 42 00    	decl   0x4246a0
40eee0:	83 ef 18             	sub    $0x18,%edi
40eee3:	83 ee 01             	sub    $0x1,%esi
40eee6:	75 eb                	jne    0x40eed3
40eee8:	5f                   	pop    %edi
40eee9:	b0 01                	mov    $0x1,%al
40eeeb:	5e                   	pop    %esi
40eeec:	c3                   	ret
40eeed:	8b ff                	mov    %edi,%edi
40eeef:	55                   	push   %ebp
40eef0:	8b ec                	mov    %esp,%ebp
40eef2:	6b 45 08 18          	imul   $0x18,0x8(%ebp),%eax
40eef6:	05 68 45 42 00       	add    $0x424568,%eax
40eefb:	50                   	push   %eax
40eefc:	ff 15 34 b0 41 00    	call   *0x41b034
40ef02:	5d                   	pop    %ebp
40ef03:	c3                   	ret
40ef04:	8b ff                	mov    %edi,%edi
40ef06:	55                   	push   %ebp
40ef07:	8b ec                	mov    %esp,%ebp
40ef09:	8b 45 0c             	mov    0xc(%ebp),%eax
40ef0c:	3b 45 08             	cmp    0x8(%ebp),%eax
40ef0f:	76 05                	jbe    0x40ef16
40ef11:	83 c8 ff             	or     $0xffffffff,%eax
40ef14:	5d                   	pop    %ebp
40ef15:	c3                   	ret
40ef16:	1b c0                	sbb    %eax,%eax
40ef18:	f7 d8                	neg    %eax
40ef1a:	5d                   	pop    %ebp
40ef1b:	c3                   	ret
40ef1c:	8b ff                	mov    %edi,%edi
40ef1e:	55                   	push   %ebp
40ef1f:	8b ec                	mov    %esp,%ebp
40ef21:	83 ec 30             	sub    $0x30,%esp
40ef24:	a1 0c 30 42 00       	mov    0x42300c,%eax
40ef29:	33 c5                	xor    %ebp,%eax
40ef2b:	89 45 fc             	mov    %eax,-0x4(%ebp)
40ef2e:	8b 45 0c             	mov    0xc(%ebp),%eax
40ef31:	89 45 d4             	mov    %eax,-0x2c(%ebp)
40ef34:	56                   	push   %esi
40ef35:	8b 75 08             	mov    0x8(%ebp),%esi
40ef38:	85 c0                	test   %eax,%eax
40ef3a:	75 16                	jne    0x40ef52
40ef3c:	e8 c6 8d ff ff       	call   0x407d07
40ef41:	6a 16                	push   $0x16
40ef43:	5e                   	pop    %esi
40ef44:	89 30                	mov    %esi,(%eax)
40ef46:	e8 e3 8c ff ff       	call   0x407c2e
40ef4b:	8b c6                	mov    %esi,%eax
40ef4d:	e9 7b 01 00 00       	jmp    0x40f0cd
40ef52:	33 c9                	xor    %ecx,%ecx
40ef54:	53                   	push   %ebx
40ef55:	57                   	push   %edi
40ef56:	89 08                	mov    %ecx,(%eax)
40ef58:	8b f9                	mov    %ecx,%edi
40ef5a:	8b d9                	mov    %ecx,%ebx
40ef5c:	89 4d e4             	mov    %ecx,-0x1c(%ebp)
40ef5f:	89 7d d8             	mov    %edi,-0x28(%ebp)
40ef62:	89 5d dc             	mov    %ebx,-0x24(%ebp)
40ef65:	89 4d e0             	mov    %ecx,-0x20(%ebp)
40ef68:	39 0e                	cmp    %ecx,(%esi)
40ef6a:	74 61                	je     0x40efcd
40ef6c:	6a 2a                	push   $0x2a
40ef6e:	58                   	pop    %eax
40ef6f:	66 89 45 f4          	mov    %ax,-0xc(%ebp)
40ef73:	6a 3f                	push   $0x3f
40ef75:	58                   	pop    %eax
40ef76:	66 89 45 f6          	mov    %ax,-0xa(%ebp)
40ef7a:	33 c0                	xor    %eax,%eax
40ef7c:	66 89 45 f8          	mov    %ax,-0x8(%ebp)
40ef80:	8d 45 f4             	lea    -0xc(%ebp),%eax
40ef83:	50                   	push   %eax
40ef84:	ff 36                	push   (%esi)
40ef86:	e8 bf cc ff ff       	call   0x40bc4a
40ef8b:	59                   	pop    %ecx
40ef8c:	59                   	pop    %ecx
40ef8d:	85 c0                	test   %eax,%eax
40ef8f:	75 14                	jne    0x40efa5
40ef91:	8d 45 d8             	lea    -0x28(%ebp),%eax
40ef94:	50                   	push   %eax
40ef95:	33 c0                	xor    %eax,%eax
40ef97:	50                   	push   %eax
40ef98:	50                   	push   %eax
40ef99:	ff 36                	push   (%esi)
40ef9b:	e8 49 01 00 00       	call   0x40f0e9
40efa0:	83 c4 10             	add    $0x10,%esp
40efa3:	eb 0f                	jmp    0x40efb4
40efa5:	8d 4d d8             	lea    -0x28(%ebp),%ecx
40efa8:	51                   	push   %ecx
40efa9:	50                   	push   %eax
40efaa:	ff 36                	push   (%esi)
40efac:	e8 d6 01 00 00       	call   0x40f187
40efb1:	83 c4 0c             	add    $0xc,%esp
40efb4:	8b f8                	mov    %eax,%edi
40efb6:	85 ff                	test   %edi,%edi
40efb8:	0f 85 03 01 00 00    	jne    0x40f0c1