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
40d0aa:	c3                   	ret
40d0ab:	8b ff                	mov    %edi,%edi
40d0ad:	55                   	push   %ebp
40d0ae:	8b ec                	mov    %esp,%ebp
40d0b0:	8b 45 10             	mov    0x10(%ebp),%eax
40d0b3:	56                   	push   %esi
40d0b4:	8b 75 0c             	mov    0xc(%ebp),%esi
40d0b7:	8b 0e                	mov    (%esi),%ecx
40d0b9:	3b 0c 85 24 25 42 00 	cmp    0x422524(,%eax,4),%ecx
40d0c0:	74 17                	je     0x40d0d9
40d0c2:	8b 4d 08             	mov    0x8(%ebp),%ecx
40d0c5:	a1 68 18 42 00       	mov    0x421868,%eax
40d0ca:	85 81 50 03 00 00    	test   %eax,0x350(%ecx)
40d0d0:	75 07                	jne    0x40d0d9
40d0d2:	e8 6c 1b 00 00       	call   0x40ec43
40d0d7:	89 06                	mov    %eax,(%esi)
40d0d9:	5e                   	pop    %esi
40d0da:	5d                   	pop    %ebp
40d0db:	c3                   	ret
40d0dc:	8b ff                	mov    %edi,%edi
40d0de:	55                   	push   %ebp
40d0df:	8b ec                	mov    %esp,%ebp
40d0e1:	8b 45 08             	mov    0x8(%ebp),%eax
40d0e4:	33 c9                	xor    %ecx,%ecx
40d0e6:	56                   	push   %esi
40d0e7:	57                   	push   %edi
40d0e8:	be ff 07 00 00       	mov    $0x7ff,%esi
40d0ed:	8b 38                	mov    (%eax),%edi
40d0ef:	8b 50 04             	mov    0x4(%eax),%edx
40d0f2:	8b c2                	mov    %edx,%eax
40d0f4:	c1 e8 14             	shr    $0x14,%eax
40d0f7:	23 c6                	and    %esi,%eax
40d0f9:	3b c6                	cmp    %esi,%eax
40d0fb:	75 3b                	jne    0x40d138
40d0fd:	8b f2                	mov    %edx,%esi
40d0ff:	8b c7                	mov    %edi,%eax
40d101:	81 e6 ff ff 0f 00    	and    $0xfffff,%esi
40d107:	0b c6                	or     %esi,%eax
40d109:	75 03                	jne    0x40d10e
40d10b:	40                   	inc    %eax
40d10c:	eb 2c                	jmp    0x40d13a
40d10e:	b8 00 00 08 00       	mov    $0x80000,%eax
40d113:	3b d1                	cmp    %ecx,%edx
40d115:	7f 13                	jg     0x40d12a
40d117:	7c 04                	jl     0x40d11d
40d119:	3b f9                	cmp    %ecx,%edi
40d11b:	73 0d                	jae    0x40d12a
40d11d:	3b f9                	cmp    %ecx,%edi
40d11f:	75 09                	jne    0x40d12a
40d121:	3b f0                	cmp    %eax,%esi
40d123:	75 05                	jne    0x40d12a
40d125:	6a 04                	push   $0x4
40d127:	58                   	pop    %eax
40d128:	eb 10                	jmp    0x40d13a
40d12a:	23 d0                	and    %eax,%edx
40d12c:	0b ca                	or     %edx,%ecx
40d12e:	74 04                	je     0x40d134
40d130:	6a 02                	push   $0x2
40d132:	eb f3                	jmp    0x40d127
40d134:	6a 03                	push   $0x3
40d136:	eb ef                	jmp    0x40d127
40d138:	33 c0                	xor    %eax,%eax
40d13a:	5f                   	pop    %edi
40d13b:	5e                   	pop    %esi
40d13c:	5d                   	pop    %ebp
40d13d:	c3                   	ret
40d13e:	8b ff                	mov    %edi,%edi
40d140:	55                   	push   %ebp
40d141:	8b ec                	mov    %esp,%ebp
40d143:	8b 45 08             	mov    0x8(%ebp),%eax
40d146:	53                   	push   %ebx
40d147:	0f bf 5d 14          	movswl 0x14(%ebp),%ebx
40d14b:	56                   	push   %esi
40d14c:	8b 70 04             	mov    0x4(%eax),%esi
40d14f:	8b cb                	mov    %ebx,%ecx
40d151:	57                   	push   %edi
40d152:	8b 38                	mov    (%eax),%edi
40d154:	8b d6                	mov    %esi,%edx
40d156:	23 55 10             	and    0x10(%ebp),%edx
40d159:	8b c7                	mov    %edi,%eax
40d15b:	23 45 0c             	and    0xc(%ebp),%eax
40d15e:	81 e2 ff ff 0f 00    	and    $0xfffff,%edx
40d164:	e8 57 ab 00 00       	call   0x417cc0
40d169:	6a 08                	push   $0x8
40d16b:	0f b7 c0             	movzwl %ax,%eax
40d16e:	59                   	pop    %ecx
40d16f:	66 3b c1             	cmp    %cx,%ax
40d172:	77 66                	ja     0x40d1da
40d174:	73 04                	jae    0x40d17a
40d176:	32 c0                	xor    %al,%al
40d178:	eb 62                	jmp    0x40d1dc
40d17a:	33 c0                	xor    %eax,%eax
40d17c:	33 d2                	xor    %edx,%edx
40d17e:	40                   	inc    %eax
40d17f:	8b cb                	mov    %ebx,%ecx
40d181:	e8 1a ab 00 00       	call   0x417ca0
40d186:	83 c0 ff             	add    $0xffffffff,%eax
40d189:	83 d2 ff             	adc    $0xffffffff,%edx
40d18c:	23 c7                	and    %edi,%eax
40d18e:	23 d6                	and    %esi,%edx
40d190:	81 e2 ff ff 0f 00    	and    $0xfffff,%edx
40d196:	0b c2                	or     %edx,%eax
40d198:	75 40                	jne    0x40d1da
40d19a:	66 83 7d 14 30       	cmpw   $0x30,0x14(%ebp)
40d19f:	74 22                	je     0x40d1c3
40d1a1:	0f ac f7 04          	shrd   $0x4,%esi,%edi
40d1a5:	8b cb                	mov    %ebx,%ecx
40d1a7:	23 7d 0c             	and    0xc(%ebp),%edi
40d1aa:	c1 ee 04             	shr    $0x4,%esi
40d1ad:	8b c7                	mov    %edi,%eax
40d1af:	23 75 10             	and    0x10(%ebp),%esi
40d1b2:	81 e6 ff ff 00 00    	and    $0xffff,%esi
40d1b8:	8b d6                	mov    %esi,%edx
40d1ba:	e8 01 ab 00 00       	call   0x417cc0
40d1bf:	8a c8                	mov    %al,%cl
40d1c1:	eb 10                	jmp    0x40d1d3
40d1c3:	33 c9                	xor    %ecx,%ecx
40d1c5:	81 e6 00 00 f0 7f    	and    $0x7ff00000,%esi
40d1cb:	8b c1                	mov    %ecx,%eax
40d1cd:	0b c6                	or     %esi,%eax
40d1cf:	74 02                	je     0x40d1d3
40d1d1:	b1 01                	mov    $0x1,%cl
40d1d3:	80 e1 01             	and    $0x1,%cl
40d1d6:	8a c1                	mov    %cl,%al
40d1d8:	eb 02                	jmp    0x40d1dc
40d1da:	b0 01                	mov    $0x1,%al
40d1dc:	5f                   	pop    %edi
40d1dd:	5e                   	pop    %esi
40d1de:	5b                   	pop    %ebx
40d1df:	5d                   	pop    %ebp
40d1e0:	c3                   	ret
40d1e1:	8b ff                	mov    %edi,%edi
40d1e3:	55                   	push   %ebp
40d1e4:	8b ec                	mov    %esp,%ebp
40d1e6:	83 ec 2c             	sub    $0x2c,%esp
40d1e9:	33 d2                	xor    %edx,%edx
40d1eb:	56                   	push   %esi
40d1ec:	8b 75 1c             	mov    0x1c(%ebp),%esi
40d1ef:	57                   	push   %edi
40d1f0:	85 f6                	test   %esi,%esi
40d1f2:	79 02                	jns    0x40d1f6
40d1f4:	8b f2                	mov    %edx,%esi
40d1f6:	8b 7d 0c             	mov    0xc(%ebp),%edi
40d1f9:	8d 46 0b             	lea    0xb(%esi),%eax
40d1fc:	88 17                	mov    %dl,(%edi)
40d1fe:	39 45 10             	cmp    %eax,0x10(%ebp)
40d201:	77 22                	ja     0x40d225
40d203:	8b 4d 2c             	mov    0x2c(%ebp),%ecx
40d206:	6a 22                	push   $0x22
40d208:	5e                   	pop    %esi
40d209:	51                   	push   %ecx
40d20a:	52                   	push   %edx
40d20b:	52                   	push   %edx
40d20c:	52                   	push   %edx
40d20d:	52                   	push   %edx
40d20e:	52                   	push   %edx
40d20f:	c6 41 1c 01          	movb   $0x1,0x1c(%ecx)
40d213:	89 71 18             	mov    %esi,0x18(%ecx)
40d216:	e8 31 a2 ff ff       	call   0x40744c
40d21b:	83 c4 18             	add    $0x18,%esp
40d21e:	8b c6                	mov    %esi,%eax
40d220:	e9 e5 02 00 00       	jmp    0x40d50a
40d225:	53                   	push   %ebx
40d226:	8b 5d 08             	mov    0x8(%ebp),%ebx
40d229:	b9 ff 07 00 00       	mov    $0x7ff,%ecx
40d22e:	8b 43 04             	mov    0x4(%ebx),%eax
40d231:	c1 e8 14             	shr    $0x14,%eax
40d234:	23 c1                	and    %ecx,%eax
40d236:	3b c1                	cmp    %ecx,%eax
40d238:	75 53                	jne    0x40d28d
40d23a:	ff 75 2c             	push   0x2c(%ebp)
40d23d:	ff 75 28             	push   0x28(%ebp)
40d240:	ff 75 24             	push   0x24(%ebp)
40d243:	52                   	push   %edx
40d244:	56                   	push   %esi