40cb6d:	8b 45 0c             	mov    0xc(%ebp),%eax
40cb70:	80 38 00             	cmpb   $0x0,(%eax)
40cb73:	74 04                	je     0x40cb79
40cb75:	32 c0                	xor    %al,%al
40cb77:	5d                   	pop    %ebp
40cb78:	c3                   	ret
40cb79:	8b 4d 08             	mov    0x8(%ebp),%ecx
40cb7c:	c6 00 01             	movb   $0x1,(%eax)
40cb7f:	b0 01                	mov    $0x1,%al
40cb81:	81 61 04 ff f7 ff ff 	andl   $0xfffff7ff,0x4(%ecx)
40cb88:	5d                   	pop    %ebp
40cb89:	c3                   	ret
40cb8a:	8b ff                	mov    %edi,%edi
40cb8c:	55                   	push   %ebp
40cb8d:	8b ec                	mov    %esp,%ebp
40cb8f:	8b 45 0c             	mov    0xc(%ebp),%eax
40cb92:	80 38 00             	cmpb   $0x0,(%eax)
40cb95:	75 25                	jne    0x40cbbc
40cb97:	8b 55 08             	mov    0x8(%ebp),%edx
40cb9a:	c6 00 01             	movb   $0x1,(%eax)
40cb9d:	8b 0a                	mov    (%edx),%ecx
40cb9f:	f6 c1 02             	test   $0x2,%cl
40cba2:	75 18                	jne    0x40cbbc
40cba4:	83 e1 fe             	and    $0xfffffffe,%ecx
40cba7:	b0 01                	mov    $0x1,%al
40cba9:	83 c9 02             	or     $0x2,%ecx
40cbac:	89 0a                	mov    %ecx,(%edx)
40cbae:	8b 4a 04             	mov    0x4(%edx),%ecx
40cbb1:	83 e1 fc             	and    $0xfffffffc,%ecx
40cbb4:	83 c9 04             	or     $0x4,%ecx
40cbb7:	89 4a 04             	mov    %ecx,0x4(%edx)
40cbba:	5d                   	pop    %ebp
40cbbb:	c3                   	ret
40cbbc:	32 c0                	xor    %al,%al
40cbbe:	5d                   	pop    %ebp
40cbbf:	c3                   	ret
40cbc0:	8b ff                	mov    %edi,%edi
40cbc2:	55                   	push   %ebp
40cbc3:	8b ec                	mov    %esp,%ebp
40cbc5:	8b 4d 08             	mov    0x8(%ebp),%ecx
40cbc8:	8b 01                	mov    (%ecx),%eax
40cbca:	a9 00 c0 00 00       	test   $0xc000,%eax
40cbcf:	74 04                	je     0x40cbd5
40cbd1:	32 c0                	xor    %al,%al
40cbd3:	5d                   	pop    %ebp
40cbd4:	c3                   	ret
40cbd5:	0d 00 40 00 00       	or     $0x4000,%eax
40cbda:	89 01                	mov    %eax,(%ecx)
40cbdc:	b0 01                	mov    $0x1,%al
40cbde:	5d                   	pop    %ebp
40cbdf:	c3                   	ret
40cbe0:	8b ff                	mov    %edi,%edi
40cbe2:	55                   	push   %ebp
40cbe3:	8b ec                	mov    %esp,%ebp
40cbe5:	8b 4d 08             	mov    0x8(%ebp),%ecx
40cbe8:	8b 01                	mov    (%ecx),%eax
40cbea:	a9 00 02 00 00       	test   $0x200,%eax
40cbef:	75 04                	jne    0x40cbf5
40cbf1:	32 c0                	xor    %al,%al
40cbf3:	5d                   	pop    %ebp
40cbf4:	c3                   	ret
40cbf5:	0d 00 04 00 00       	or     $0x400,%eax
40cbfa:	89 01                	mov    %eax,(%ecx)
40cbfc:	b0 01                	mov    $0x1,%al
40cbfe:	5d                   	pop    %ebp
40cbff:	c3                   	ret
40cc00:	8b ff                	mov    %edi,%edi
40cc02:	55                   	push   %ebp
40cc03:	8b ec                	mov    %esp,%ebp
40cc05:	5d                   	pop    %ebp
40cc06:	e9 5e fe ff ff       	jmp    0x40ca69
40cc0b:	8b ff                	mov    %edi,%edi
40cc0d:	55                   	push   %ebp
40cc0e:	8b ec                	mov    %esp,%ebp
40cc10:	51                   	push   %ecx
40cc11:	51                   	push   %ecx
40cc12:	53                   	push   %ebx
40cc13:	56                   	push   %esi
40cc14:	57                   	push   %edi
40cc15:	8b 7d 08             	mov    0x8(%ebp),%edi
40cc18:	8b 47 0c             	mov    0xc(%edi),%eax
40cc1b:	90                   	nop
40cc1c:	c1 e8 0c             	shr    $0xc,%eax
40cc1f:	bb e8 11 42 00       	mov    $0x4211e8,%ebx
40cc24:	a8 01                	test   $0x1,%al
40cc26:	75 66                	jne    0x40cc8e
40cc28:	57                   	push   %edi
40cc29:	e8 95 e5 ff ff       	call   0x40b1c3
40cc2e:	59                   	pop    %ecx
40cc2f:	83 f8 ff             	cmp    $0xffffffff,%eax
40cc32:	74 30                	je     0x40cc64
40cc34:	57                   	push   %edi
40cc35:	e8 89 e5 ff ff       	call   0x40b1c3
40cc3a:	59                   	pop    %ecx
40cc3b:	83 f8 fe             	cmp    $0xfffffffe,%eax
40cc3e:	74 24                	je     0x40cc64
40cc40:	57                   	push   %edi
40cc41:	e8 7d e5 ff ff       	call   0x40b1c3
40cc46:	8b f0                	mov    %eax,%esi
40cc48:	57                   	push   %edi
40cc49:	c1 fe 06             	sar    $0x6,%esi
40cc4c:	e8 72 e5 ff ff       	call   0x40b1c3
40cc51:	59                   	pop    %ecx
40cc52:	83 e0 3f             	and    $0x3f,%eax
40cc55:	59                   	pop    %ecx
40cc56:	6b c8 38             	imul   $0x38,%eax,%ecx
40cc59:	8b 04 b5 a8 21 42 00 	mov    0x4221a8(,%esi,4),%eax
40cc60:	03 c1                	add    %ecx,%eax
40cc62:	eb 02                	jmp    0x40cc66
40cc64:	8b c3                	mov    %ebx,%eax
40cc66:	80 78 29 00          	cmpb   $0x0,0x29(%eax)
40cc6a:	74 22                	je     0x40cc8e
40cc6c:	8d 75 fc             	lea    -0x4(%ebp),%esi
40cc6f:	57                   	push   %edi
40cc70:	e8 4d 01 00 00       	call   0x40cdc2
40cc75:	59                   	pop    %ecx
40cc76:	83 f8 ff             	cmp    $0xffffffff,%eax
40cc79:	74 71                	je     0x40ccec
40cc7b:	88 06                	mov    %al,(%esi)
40cc7d:	46                   	inc    %esi
40cc7e:	8d 45 fe             	lea    -0x2(%ebp),%eax
40cc81:	3b f0                	cmp    %eax,%esi
40cc83:	75 ea                	jne    0x40cc6f
40cc85:	66 8b 45 fc          	mov    -0x4(%ebp),%ax
40cc89:	e9 e8 00 00 00       	jmp    0x40cd76
40cc8e:	8b 47 0c             	mov    0xc(%edi),%eax
40cc91:	90                   	nop
40cc92:	c1 e8 0c             	shr    $0xc,%eax
40cc95:	a8 01                	test   $0x1,%al
40cc97:	0f 85 b8 00 00 00    	jne    0x40cd55
40cc9d:	57                   	push   %edi
40cc9e:	e8 20 e5 ff ff       	call   0x40b1c3
40cca3:	59                   	pop    %ecx
40cca4:	83 f8 ff             	cmp    $0xffffffff,%eax
40cca7:	74 2e                	je     0x40ccd7
40cca9:	57                   	push   %edi
40ccaa:	e8 14 e5 ff ff       	call   0x40b1c3
40ccaf:	59                   	pop    %ecx
40ccb0:	83 f8 fe             	cmp    $0xfffffffe,%eax
40ccb3:	74 22                	je     0x40ccd7
40ccb5:	57                   	push   %edi
40ccb6:	e8 08 e5 ff ff       	call   0x40b1c3
40ccbb:	8b f0                	mov    %eax,%esi
40ccbd:	57                   	push   %edi
40ccbe:	c1 fe 06             	sar    $0x6,%esi
40ccc1:	e8 fd e4 ff ff       	call   0x40b1c3
40ccc6:	8b 1c b5 a8 21 42 00 	mov    0x4221a8(,%esi,4),%ebx
40cccd:	83 e0 3f             	and    $0x3f,%eax
40ccd0:	59                   	pop    %ecx
40ccd1:	59                   	pop    %ecx
40ccd2:	6b c8 38             	imul   $0x38,%eax,%ecx
40ccd5:	03 d9                	add    %ecx,%ebx
40ccd7:	80 7b 28 00          	cmpb   $0x0,0x28(%ebx)
40ccdb:	7d 78                	jge    0x40cd55
40ccdd:	33 f6                	xor    %esi,%esi
40ccdf:	57                   	push   %edi
40cce0:	46                   	inc    %esi
40cce1:	e8 dc 00 00 00       	call   0x40cdc2
40cce6:	59                   	pop    %ecx
40cce7:	83 f8 ff             	cmp    $0xffffffff,%eax
40ccea:	75 0a                	jne    0x40ccf6
40ccec:	b8 ff ff 00 00       	mov    $0xffff,%eax
40ccf1:	e9 80 00 00 00       	jmp    0x40cd76
40ccf6:	88 45 f8             	mov    %al,-0x8(%ebp)
40ccf9:	e8 ed 2e 00 00       	call   0x40fbeb
40ccfe:	0f b6 4d f8          	movzbl -0x8(%ebp),%ecx
40cd02:	66 83 3c 48 00       	cmpw   $0x0,(%eax,%ecx,2)
40cd07:	7d 25                	jge    0x40cd2e
40cd09:	57                   	push   %edi
40cd0a:	e8 b3 00 00 00       	call   0x40cdc2
40cd0f:	59                   	pop    %ecx
40cd10:	83 f8 ff             	cmp    $0xffffffff,%eax
40cd13:	75 13                	jne    0x40cd28
40cd15:	0f be 45 f8          	movsbl -0x8(%ebp),%eax
40cd19:	57                   	push   %edi
40cd1a:	50                   	push   %eax
40cd1b:	e8 d7 58 00 00       	call   0x4125f7
40cd20:	59                   	pop    %ecx
40cd21:	b8 ff ff 00 00       	mov    $0xffff,%eax
40cd26:	eb 4d                	jmp    0x40cd75
40cd28:	6a 02                	push   $0x2
40cd2a:	88 45 f9             	mov    %al,-0x7(%ebp)
40cd2d:	5e                   	pop    %esi
40cd2e:	56                   	push   %esi
40cd2f:	8d 45 f8             	lea    -0x8(%ebp),%eax
40cd32:	50                   	push   %eax
40cd33:	8d 45 fc             	lea    -0x4(%ebp),%eax
40cd36:	50                   	push   %eax
40cd37:	e8 96 11 00 00       	call   0x40ded2
40cd3c:	83 c4 0c             	add    $0xc,%esp
40cd3f:	83 f8 ff             	cmp    $0xffffffff,%eax
40cd42:	0f 85 3d ff ff ff    	jne    0x40cc85
40cd48:	e8 e2 d9 ff ff       	call   0x40a72f
40cd4d:	c7 00 2a 00 00 00    	movl   $0x2a,(%eax)
40cd53:	eb 97                	jmp    0x40ccec
40cd55:	8b 47 08             	mov    0x8(%edi),%eax
40cd58:	83 f8 02             	cmp    $0x2,%eax
40cd5b:	7c 12                	jl     0x40cd6f
40cd5d:	83 c0 fe             	add    $0xfffffffe,%eax
40cd60:	89 47 08             	mov    %eax,0x8(%edi)
40cd63:	8b 0f                	mov    (%edi),%ecx
40cd65:	0f b7 01             	movzwl (%ecx),%eax
40cd68:	83 c1 02             	add    $0x2,%ecx
40cd6b:	89 0f                	mov    %ecx,(%edi)
40cd6d:	eb 07                	jmp    0x40cd76
40cd6f:	57                   	push   %edi
40cd70:	e8 5e 5c 00 00       	call   0x4129d3
40cd75:	59                   	pop    %ecx
40cd76:	5f                   	pop    %edi
40cd77:	5e                   	pop    %esi
40cd78:	5b                   	pop    %ebx
40cd79:	c9                   	leave
40cd7a:	c3                   	ret
40cd7b:	8b ff                	mov    %edi,%edi
40cd7d:	55                   	push   %ebp
40cd7e:	8b ec                	mov    %esp,%ebp
40cd80:	5d                   	pop    %ebp
40cd81:	e9 85 fe ff ff       	jmp    0x40cc0b
40cd86:	8b ff                	mov    %edi,%edi
40cd88:	55                   	push   %ebp
40cd89:	8b ec                	mov    %esp,%ebp
40cd8b:	8b 55 08             	mov    0x8(%ebp),%edx
40cd8e:	85 d2                	test   %edx,%edx
40cd90:	75 15                	jne    0x40cda7
40cd92:	e8 98 d9 ff ff       	call   0x40a72f
40cd97:	c7 00 16 00 00 00    	movl   $0x16,(%eax)
40cd9d:	e8 27 a7 ff ff       	call   0x4074c9
40cda2:	83 c8 ff             	or     $0xffffffff,%eax
40cda5:	5d                   	pop    %ebp
40cda6:	c3                   	ret
40cda7:	83 6a 08 01          	subl   $0x1,0x8(%edx)
40cdab:	79 09                	jns    0x40cdb6
40cdad:	52                   	push   %edx
40cdae:	e8 15 5c 00 00       	call   0x4129c8
40cdb3:	59                   	pop    %ecx
40cdb4:	5d                   	pop    %ebp
40cdb5:	c3                   	ret
40cdb6:	8b 02                	mov    (%edx),%eax
40cdb8:	8a 08                	mov    (%eax),%cl
40cdba:	40                   	inc    %eax
40cdbb:	89 02                	mov    %eax,(%edx)
40cdbd:	0f b6 c1             	movzbl %cl,%eax
40cdc0:	5d                   	pop    %ebp
40cdc1:	c3                   	ret
40cdc2:	8b ff                	mov    %edi,%edi
40cdc4:	55                   	push   %ebp
40cdc5:	8b ec                	mov    %esp,%ebp
40cdc7:	5d                   	pop    %ebp
40cdc8:	e9 b9 ff ff ff       	jmp    0x40cd86
40cdcd:	6a 0c                	push   $0xc
40cdcf:	68 88 01 42 00       	push   $0x420188
40cdd4:	e8 c7 70 ff ff       	call   0x403ea0
40cdd9:	83 65 e4 00          	andl   $0x0,-0x1c(%ebp)
40cddd:	8b 45 08             	mov    0x8(%ebp),%eax
40cde0:	ff 30                	push   (%eax)
40cde2:	e8 98 28 00 00       	call   0x40f67f
40cde7:	59                   	pop    %ecx
40cde8:	83 65 fc 00          	andl   $0x0,-0x4(%ebp)
40cdec:	8b 4d 0c             	mov    0xc(%ebp),%ecx
40cdef:	8b 01                	mov    (%ecx),%eax
40cdf1:	8b 38                	mov    (%eax),%edi
40cdf3:	8b 71 04             	mov    0x4(%ecx),%esi
40cdf6:	8b d7                	mov    %edi,%edx
40cdf8:	c1 fa 06             	sar    $0x6,%edx
40cdfb:	8b c7                	mov    %edi,%eax
40cdfd:	83 e0 3f             	and    $0x3f,%eax
40ce00:	6b c8 38             	imul   $0x38,%eax,%ecx
40ce03:	8b 04 95 a8 21 42 00 	mov    0x4221a8(,%edx,4),%eax
40ce0a:	f6 44 08 28 01       	testb  $0x1,0x28(%eax,%ecx,1)
40ce0f:	74 0d                	je     0x40ce1e
40ce11:	56                   	push   %esi
40ce12:	57                   	push   %edi
40ce13:	e8 19 01 00 00       	call   0x40cf31
40ce18:	59                   	pop    %ecx
40ce19:	59                   	pop    %ecx
40ce1a:	8b f0                	mov    %eax,%esi
40ce1c:	eb 0e                	jmp    0x40ce2c
40ce1e:	c6 46 1c 01          	movb   $0x1,0x1c(%esi)
40ce22:	c7 46 18 09 00 00 00 	movl   $0x9,0x18(%esi)
40ce29:	83 ce ff             	or     $0xffffffff,%esi
40ce2c:	89 75 e4             	mov    %esi,-0x1c(%ebp)
40ce2f:	c7 45 fc fe ff ff ff 	movl   $0xfffffffe,-0x4(%ebp)
40ce36:	e8 17 00 00 00       	call   0x40ce52
40ce3b:	8b c6                	mov    %esi,%eax
40ce3d:	8b 4d f0             	mov    -0x10(%ebp),%ecx
40ce40:	64 89 0d 00 00 00 00 	mov    %ecx,%fs:0x0
40ce47:	59                   	pop    %ecx
40ce48:	5f                   	pop    %edi
40ce49:	5e                   	pop    %esi
40ce4a:	5b                   	pop    %ebx
40ce4b:	c9                   	leave
40ce4c:	c2 0c 00             	ret    $0xc
40ce4f:	8b 75 e4             	mov    -0x1c(%ebp),%esi
40ce52:	8b 45 10             	mov    0x10(%ebp),%eax
40ce55:	ff 30                	push   (%eax)
40ce57:	e8 d8 28 00 00       	call   0x40f734
40ce5c:	59                   	pop    %ecx
40ce5d:	c3                   	ret
40ce5e:	8b ff                	mov    %edi,%edi
40ce60:	55                   	push   %ebp
40ce61:	8b ec                	mov    %esp,%ebp
40ce63:	83 ec 14             	sub    $0x14,%esp
40ce66:	56                   	push   %esi
40ce67:	8b 75 08             	mov    0x8(%ebp),%esi
40ce6a:	83 fe fe             	cmp    $0xfffffffe,%esi
40ce6d:	75 18                	jne    0x40ce87
40ce6f:	8b 45 0c             	mov    0xc(%ebp),%eax
40ce72:	83 60 20 00          	andl   $0x0,0x20(%eax)
40ce76:	c6 40 24 01          	movb   $0x1,0x24(%eax)
40ce7a:	c6 40 1c 01          	movb   $0x1,0x1c(%eax)
40ce7e:	c7 40 18 09 00 00 00 	movl   $0x9,0x18(%eax)
40ce85:	eb 74                	jmp    0x40cefb
40ce87:	85 f6                	test   %esi,%esi
40ce89:	78 4b                	js     0x40ced6
40ce8b:	3b 35 a8 23 42 00    	cmp    0x4223a8,%esi
40ce91:	73 43                	jae    0x40ced6
40ce93:	8b c6                	mov    %esi,%eax
40ce95:	8b d6                	mov    %esi,%edx
40ce97:	83 e0 3f             	and    $0x3f,%eax
40ce9a:	c1 fa 06             	sar    $0x6,%edx
40ce9d:	6b c8 38             	imul   $0x38,%eax,%ecx
40cea0:	8b 04 95 a8 21 42 00 	mov    0x4221a8(,%edx,4),%eax
40cea7:	f6 44 08 28 01       	testb  $0x1,0x28(%eax,%ecx,1)
40ceac:	74 28                	je     0x40ced6
40ceae:	8d 45 08             	lea    0x8(%ebp),%eax
40ceb1:	89 75 f8             	mov    %esi,-0x8(%ebp)
40ceb4:	89 45 ec             	mov    %eax,-0x14(%ebp)
40ceb7:	8d 4d ff             	lea    -0x1(%ebp),%ecx
40ceba:	8b 45 0c             	mov    0xc(%ebp),%eax
40cebd:	89 45 f0             	mov    %eax,-0x10(%ebp)
40cec0:	8d 45 f8             	lea    -0x8(%ebp),%eax
40cec3:	50                   	push   %eax
40cec4:	8d 45 ec             	lea    -0x14(%ebp),%eax
40cec7:	89 75 f4             	mov    %esi,-0xc(%ebp)
40ceca:	50                   	push   %eax
40cecb:	8d 45 f4             	lea    -0xc(%ebp),%eax
40cece:	50                   	push   %eax
40cecf:	e8 f9 fe ff ff       	call   0x40cdcd
40ced4:	eb 28                	jmp    0x40cefe
40ced6:	8b 45 0c             	mov    0xc(%ebp),%eax
40ced9:	33 c9                	xor    %ecx,%ecx
40cedb:	50                   	push   %eax
40cedc:	51                   	push   %ecx
40cedd:	51                   	push   %ecx
40cede:	51                   	push   %ecx
40cedf:	c6 40 24 01          	movb   $0x1,0x24(%eax)
40cee3:	51                   	push   %ecx
40cee4:	89 48 20             	mov    %ecx,0x20(%eax)
40cee7:	c6 40 1c 01          	movb   $0x1,0x1c(%eax)
40ceeb:	51                   	push   %ecx