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
40ceec:	c7 40 18 09 00 00 00 	movl   $0x9,0x18(%eax)
40cef3:	e8 54 a5 ff ff       	call   0x40744c
40cef8:	83 c4 18             	add    $0x18,%esp
40cefb:	83 c8 ff             	or     $0xffffffff,%eax
40cefe:	5e                   	pop    %esi
40ceff:	c9                   	leave
40cf00:	c3                   	ret
40cf01:	8b ff                	mov    %edi,%edi
40cf03:	55                   	push   %ebp
40cf04:	8b ec                	mov    %esp,%ebp
40cf06:	83 ec 28             	sub    $0x28,%esp
40cf09:	8d 4d d8             	lea    -0x28(%ebp),%ecx
40cf0c:	56                   	push   %esi
40cf0d:	6a 00                	push   $0x0
40cf0f:	e8 56 98 ff ff       	call   0x40676a
40cf14:	8d 45 d8             	lea    -0x28(%ebp),%eax
40cf17:	50                   	push   %eax
40cf18:	ff 75 08             	push   0x8(%ebp)
40cf1b:	e8 11 00 00 00       	call   0x40cf31
40cf20:	59                   	pop    %ecx
40cf21:	59                   	pop    %ecx
40cf22:	8d 4d d8             	lea    -0x28(%ebp),%ecx
40cf25:	8b f0                	mov    %eax,%esi
40cf27:	e8 86 98 ff ff       	call   0x4067b2
40cf2c:	8b c6                	mov    %esi,%eax
40cf2e:	5e                   	pop    %esi
40cf2f:	c9                   	leave
40cf30:	c3                   	ret
40cf31:	8b ff                	mov    %edi,%edi
40cf33:	55                   	push   %ebp
40cf34:	8b ec                	mov    %esp,%ebp
40cf36:	56                   	push   %esi
40cf37:	57                   	push   %edi
40cf38:	8b 7d 08             	mov    0x8(%ebp),%edi
40cf3b:	57                   	push   %edi
40cf3c:	e8 ba 29 00 00       	call   0x40f8fb
40cf41:	59                   	pop    %ecx
40cf42:	83 f8 ff             	cmp    $0xffffffff,%eax
40cf45:	75 04                	jne    0x40cf4b
40cf47:	33 f6                	xor    %esi,%esi
40cf49:	eb 4e                	jmp    0x40cf99
40cf4b:	a1 a8 21 42 00       	mov    0x4221a8,%eax
40cf50:	83 ff 01             	cmp    $0x1,%edi
40cf53:	75 09                	jne    0x40cf5e
40cf55:	f6 80 98 00 00 00 01 	testb  $0x1,0x98(%eax)
40cf5c:	75 0b                	jne    0x40cf69
40cf5e:	83 ff 02             	cmp    $0x2,%edi
40cf61:	75 1c                	jne    0x40cf7f
40cf63:	f6 40 60 01          	testb  $0x1,0x60(%eax)
40cf67:	74 16                	je     0x40cf7f
40cf69:	6a 02                	push   $0x2
40cf6b:	e8 8b 29 00 00       	call   0x40f8fb
40cf70:	6a 01                	push   $0x1
40cf72:	8b f0                	mov    %eax,%esi
40cf74:	e8 82 29 00 00       	call   0x40f8fb
40cf79:	59                   	pop    %ecx
40cf7a:	59                   	pop    %ecx
40cf7b:	3b c6                	cmp    %esi,%eax
40cf7d:	74 c8                	je     0x40cf47
40cf7f:	57                   	push   %edi
40cf80:	e8 76 29 00 00       	call   0x40f8fb
40cf85:	59                   	pop    %ecx
40cf86:	50                   	push   %eax
40cf87:	ff 15 2c 90 41 00    	call   *0x41902c
40cf8d:	85 c0                	test   %eax,%eax
40cf8f:	75 b6                	jne    0x40cf47
40cf91:	ff 15 28 90 41 00    	call   *0x419028
40cf97:	8b f0                	mov    %eax,%esi
40cf99:	57                   	push   %edi
40cf9a:	e8 cb 28 00 00       	call   0x40f86a
40cf9f:	59                   	pop    %ecx
40cfa0:	8b cf                	mov    %edi,%ecx
40cfa2:	83 e7 3f             	and    $0x3f,%edi
40cfa5:	c1 f9 06             	sar    $0x6,%ecx
40cfa8:	6b d7 38             	imul   $0x38,%edi,%edx
40cfab:	8b 0c 8d a8 21 42 00 	mov    0x4221a8(,%ecx,4),%ecx
40cfb2:	c6 44 11 28 00       	movb   $0x0,0x28(%ecx,%edx,1)
40cfb7:	85 f6                	test   %esi,%esi
40cfb9:	74 10                	je     0x40cfcb
40cfbb:	ff 75 0c             	push   0xc(%ebp)
40cfbe:	56                   	push   %esi
40cfbf:	e8 34 d7 ff ff       	call   0x40a6f8
40cfc4:	59                   	pop    %ecx
40cfc5:	59                   	pop    %ecx
40cfc6:	83 c8 ff             	or     $0xffffffff,%eax
40cfc9:	eb 02                	jmp    0x40cfcd
40cfcb:	33 c0                	xor    %eax,%eax
40cfcd:	5f                   	pop    %edi
40cfce:	5e                   	pop    %esi
40cfcf:	5d                   	pop    %ebp
40cfd0:	c3                   	ret
40cfd1:	cc                   	int3
40cfd2:	8b ff                	mov    %edi,%edi
40cfd4:	55                   	push   %ebp
40cfd5:	8b ec                	mov    %esp,%ebp
40cfd7:	56                   	push   %esi
40cfd8:	8b 75 08             	mov    0x8(%ebp),%esi
40cfdb:	83 fe e0             	cmp    $0xffffffe0,%esi
40cfde:	77 30                	ja     0x40d010
40cfe0:	85 f6                	test   %esi,%esi
40cfe2:	75 17                	jne    0x40cffb
40cfe4:	46                   	inc    %esi
40cfe5:	eb 14                	jmp    0x40cffb
40cfe7:	e8 e8 cf ff ff       	call   0x409fd4
40cfec:	85 c0                	test   %eax,%eax
40cfee:	74 20                	je     0x40d010
40cff0:	56                   	push   %esi
40cff1:	e8 4f c1 ff ff       	call   0x409145
40cff6:	59                   	pop    %ecx
40cff7:	85 c0                	test   %eax,%eax
40cff9:	74 15                	je     0x40d010
40cffb:	56                   	push   %esi
40cffc:	6a 00                	push   $0x0
40cffe:	ff 35 3c 25 42 00    	push   0x42253c
40d004:	ff 15 d0 90 41 00    	call   *0x4190d0
40d00a:	85 c0                	test   %eax,%eax
40d00c:	74 d9                	je     0x40cfe7
40d00e:	eb 0d                	jmp    0x40d01d
40d010:	e8 1a d7 ff ff       	call   0x40a72f
40d015:	c7 00 0c 00 00 00    	movl   $0xc,(%eax)
40d01b:	33 c0                	xor    %eax,%eax
40d01d:	5e                   	pop    %esi
40d01e:	5d                   	pop    %ebp
40d01f:	c3                   	ret
40d020:	8b ff                	mov    %edi,%edi
40d022:	55                   	push   %ebp
40d023:	8b ec                	mov    %esp,%ebp
40d025:	56                   	push   %esi
40d026:	8b 75 0c             	mov    0xc(%ebp),%esi
40d029:	8b 06                	mov    (%esi),%eax
40d02b:	3b 05 b4 23 42 00    	cmp    0x4223b4,%eax
40d031:	74 17                	je     0x40d04a
40d033:	8b 4d 08             	mov    0x8(%ebp),%ecx
40d036:	a1 68 18 42 00       	mov    0x421868,%eax
40d03b:	85 81 50 03 00 00    	test   %eax,0x350(%ecx)
40d041:	75 07                	jne    0x40d04a
40d043:	e8 ff 2f 00 00       	call   0x410047
40d048:	89 06                	mov    %eax,(%esi)
40d04a:	5e                   	pop    %esi
40d04b:	5d                   	pop    %ebp
40d04c:	c3                   	ret
40d04d:	8b ff                	mov    %edi,%edi
40d04f:	55                   	push   %ebp
40d050:	8b ec                	mov    %esp,%ebp
40d052:	8b 45 10             	mov    0x10(%ebp),%eax
40d055:	56                   	push   %esi
40d056:	8b 75 0c             	mov    0xc(%ebp),%esi
40d059:	8b 0e                	mov    (%esi),%ecx
40d05b:	3b 0c 85 b4 23 42 00 	cmp    0x4223b4(,%eax,4),%ecx
40d062:	74 17                	je     0x40d07b
40d064:	8b 4d 08             	mov    0x8(%ebp),%ecx
40d067:	a1 68 18 42 00       	mov    0x421868,%eax
40d06c:	85 81 50 03 00 00    	test   %eax,0x350(%ecx)
40d072:	75 07                	jne    0x40d07b
40d074:	e8 ce 2f 00 00       	call   0x410047
40d079:	89 06                	mov    %eax,(%esi)
40d07b:	5e                   	pop    %esi
40d07c:	5d                   	pop    %ebp
40d07d:	c3                   	ret
40d07e:	8b ff                	mov    %edi,%edi
40d080:	55                   	push   %ebp
40d081:	8b ec                	mov    %esp,%ebp
40d083:	56                   	push   %esi
40d084:	8b 75 0c             	mov    0xc(%ebp),%esi
40d087:	8b 06                	mov    (%esi),%eax
40d089:	3b 05 24 25 42 00    	cmp    0x422524,%eax
40d08f:	74 17                	je     0x40d0a8
40d091:	8b 4d 08             	mov    0x8(%ebp),%ecx
40d094:	a1 68 18 42 00       	mov    0x421868,%eax
40d099:	85 81 50 03 00 00    	test   %eax,0x350(%ecx)
40d09f:	75 07                	jne    0x40d0a8
40d0a1:	e8 9d 1b 00 00       	call   0x40ec43
40d0a6:	89 06                	mov    %eax,(%esi)
40d0a8:	5e                   	pop    %esi
40d0a9:	5d                   	pop    %ebp