40ef50:	8b 5d 08             	mov    0x8(%ebp),%ebx
40ef53:	3b 94 83 00 ff ff ff 	cmp    -0x100(%ebx,%eax,4),%edx
40ef5a:	0f 9f c2             	setg   %dl
40ef5d:	48                   	dec    %eax
40ef5e:	84 d2                	test   %dl,%dl
40ef60:	74 04                	je     0x40ef66
40ef62:	85 c0                	test   %eax,%eax
40ef64:	7d e3                	jge    0x40ef49
40ef66:	8b c2                	mov    %edx,%eax
40ef68:	5b                   	pop    %ebx
40ef69:	5d                   	pop    %ebp
40ef6a:	c3                   	ret
40ef6b:	90                   	nop
40ef6c:	55                   	push   %ebp
40ef6d:	8b ec                	mov    %esp,%ebp
40ef6f:	53                   	push   %ebx
40ef70:	56                   	push   %esi
40ef71:	b2 01                	mov    $0x1,%dl
40ef73:	8b 4d 08             	mov    0x8(%ebp),%ecx
40ef76:	ff 84 81 00 ff ff ff 	incl   -0x100(%ecx,%eax,4)
40ef7d:	8b 4d 08             	mov    0x8(%ebp),%ecx
40ef80:	8b 8c c1 04 fd ff ff 	mov    -0x2fc(%ecx,%eax,8),%ecx
40ef87:	8b d9                	mov    %ecx,%ebx
40ef89:	8b 75 08             	mov    0x8(%ebp),%esi
40ef8c:	03 9c c6 00 fd ff ff 	add    -0x300(%esi,%eax,8),%ebx
40ef93:	8b 75 08             	mov    0x8(%ebp),%esi
40ef96:	3b 9c 86 00 ff ff ff 	cmp    -0x100(%esi,%eax,4),%ebx
40ef9d:	7f 22                	jg     0x40efc1
40ef9f:	85 c0                	test   %eax,%eax
40efa1:	75 04                	jne    0x40efa7
40efa3:	33 d2                	xor    %edx,%edx
40efa5:	eb 1a                	jmp    0x40efc1
40efa7:	8b 55 08             	mov    0x8(%ebp),%edx
40efaa:	8b 55 08             	mov    0x8(%ebp),%edx
40efad:	89 8c 82 00 ff ff ff 	mov    %ecx,-0x100(%edx,%eax,4)
40efb4:	8b 55 08             	mov    0x8(%ebp),%edx
40efb7:	52                   	push   %edx
40efb8:	48                   	dec    %eax
40efb9:	e8 ae ff ff ff       	call   0x40ef6c
40efbe:	59                   	pop    %ecx
40efbf:	8b d0                	mov    %eax,%edx
40efc1:	8b c2                	mov    %edx,%eax
40efc3:	5e                   	pop    %esi
40efc4:	5b                   	pop    %ebx
40efc5:	5d                   	pop    %ebp
40efc6:	c3                   	ret
40efc7:	90                   	nop
40efc8:	55                   	push   %ebp
40efc9:	8b ec                	mov    %esp,%ebp
40efcb:	81 c4 e8 fc ff ff    	add    $0xfffffce8,%esp
40efd1:	53                   	push   %ebx
40efd2:	56                   	push   %esi
40efd3:	57                   	push   %edi
40efd4:	89 85 fc fc ff ff    	mov    %eax,-0x304(%ebp)
40efda:	8b 85 fc fc ff ff    	mov    -0x304(%ebp),%eax
40efe0:	f6 40 01 20          	testb  $0x20,0x1(%eax)
40efe4:	75 0a                	jne    0x40eff0
40efe6:	b8 57 00 07 80       	mov    $0x80070057,%eax
40efeb:	e8 20 fe ff ff       	call   0x40ee10
40eff0:	8b 85 fc fc ff ff    	mov    -0x304(%ebp),%eax
40eff6:	66 8b 00             	mov    (%eax),%ax
40eff9:	8b d0                	mov    %eax,%edx
40effb:	66 81 e2 ff 0f       	and    $0xfff,%dx
40f000:	66 83 fa 0c          	cmp    $0xc,%dx
40f004:	0f 85 22 01 00 00    	jne    0x40f12c
40f00a:	8b 95 fc fc ff ff    	mov    -0x304(%ebp),%edx
40f010:	f6 c4 40             	test   $0x40,%ah
40f013:	74 13                	je     0x40f028
40f015:	8b 85 fc fc ff ff    	mov    -0x304(%ebp),%eax
40f01b:	8b 40 08             	mov    0x8(%eax),%eax
40f01e:	8b 00                	mov    (%eax),%eax
40f020:	89 85 f8 fc ff ff    	mov    %eax,-0x308(%ebp)
40f026:	eb 0f                	jmp    0x40f037
40f028:	8b 85 fc fc ff ff    	mov    -0x304(%ebp),%eax
40f02e:	8b 40 08             	mov    0x8(%eax),%eax
40f031:	89 85 f8 fc ff ff    	mov    %eax,-0x308(%ebp)
40f037:	8b 85 f8 fc ff ff    	mov    -0x308(%ebp),%eax
40f03d:	0f b7 00             	movzwl (%eax),%eax
40f040:	89 85 f0 fc ff ff    	mov    %eax,-0x310(%ebp)
40f046:	8b 9d f0 fc ff ff    	mov    -0x310(%ebp),%ebx
40f04c:	4b                   	dec    %ebx
40f04d:	85 db                	test   %ebx,%ebx
40f04f:	7c 6b                	jl     0x40f0bc
40f051:	43                   	inc    %ebx
40f052:	33 ff                	xor    %edi,%edi
40f054:	8d b5 00 fd ff ff    	lea    -0x300(%ebp),%esi
40f05a:	8b c6                	mov    %esi,%eax
40f05c:	89 85 e8 fc ff ff    	mov    %eax,-0x318(%ebp)
40f062:	8b 85 e8 fc ff ff    	mov    -0x318(%ebp),%eax
40f068:	83 c0 04             	add    $0x4,%eax
40f06b:	50                   	push   %eax
40f06c:	8d 47 01             	lea    0x1(%edi),%eax
40f06f:	50                   	push   %eax
40f070:	8b 85 f8 fc ff ff    	mov    -0x308(%ebp),%eax
40f076:	50                   	push   %eax
40f077:	e8 e8 ee ff ff       	call   0x40df64
40f07c:	e8 8f fd ff ff       	call   0x40ee10
40f081:	8d 85 f4 fc ff ff    	lea    -0x30c(%ebp),%eax
40f087:	50                   	push   %eax
40f088:	8d 47 01             	lea    0x1(%edi),%eax
40f08b:	50                   	push   %eax
40f08c:	8b 85 f8 fc ff ff    	mov    -0x308(%ebp),%eax
40f092:	50                   	push   %eax
40f093:	e8 d4 ee ff ff       	call   0x40df6c
40f098:	e8 73 fd ff ff       	call   0x40ee10
40f09d:	8b 85 e8 fc ff ff    	mov    -0x318(%ebp),%eax
40f0a3:	8b 95 f4 fc ff ff    	mov    -0x30c(%ebp),%edx
40f0a9:	2b 50 04             	sub    0x4(%eax),%edx
40f0ac:	42                   	inc    %edx
40f0ad:	8b 85 e8 fc ff ff    	mov    -0x318(%ebp),%eax
40f0b3:	89 10                	mov    %edx,(%eax)
40f0b5:	47                   	inc    %edi
40f0b6:	83 c6 08             	add    $0x8,%esi
40f0b9:	4b                   	dec    %ebx
40f0ba:	75 9e                	jne    0x40f05a
40f0bc:	8b 9d f0 fc ff ff    	mov    -0x310(%ebp),%ebx
40f0c2:	4b                   	dec    %ebx
40f0c3:	85 db                	test   %ebx,%ebx
40f0c5:	7c 1a                	jl     0x40f0e1
40f0c7:	43                   	inc    %ebx
40f0c8:	8d 85 04 fd ff ff    	lea    -0x2fc(%ebp),%eax
40f0ce:	8d 95 00 ff ff ff    	lea    -0x100(%ebp),%edx
40f0d4:	8b 08                	mov    (%eax),%ecx
40f0d6:	89 0a                	mov    %ecx,(%edx)
40f0d8:	83 c2 04             	add    $0x4,%edx
40f0db:	83 c0 08             	add    $0x8,%eax
40f0de:	4b                   	dec    %ebx
40f0df:	75 f3                	jne    0x40f0d4
40f0e1:	55                   	push   %ebp
40f0e2:	8b 9d f0 fc ff ff    	mov    -0x310(%ebp),%ebx
40f0e8:	4b                   	dec    %ebx
40f0e9:	8b c3                	mov    %ebx,%eax
40f0eb:	e8 4c fe ff ff       	call   0x40ef3c
40f0f0:	59                   	pop    %ecx
40f0f1:	84 c0                	test   %al,%al
40f0f3:	74 2a                	je     0x40f11f
40f0f5:	8d 85 ec fc ff ff    	lea    -0x314(%ebp),%eax
40f0fb:	50                   	push   %eax
40f0fc:	8d 85 00 ff ff ff    	lea    -0x100(%ebp),%eax
40f102:	50                   	push   %eax
40f103:	8b 85 f8 fc ff ff    	mov    -0x308(%ebp),%eax
40f109:	50                   	push   %eax
40f10a:	e8 65 ee ff ff       	call   0x40df74
40f10f:	e8 fc fc ff ff       	call   0x40ee10
40f114:	8b 85 ec fc ff ff    	mov    -0x314(%ebp),%eax
40f11a:	e8 a1 00 00 00       	call   0x40f1c0
40f11f:	55                   	push   %ebp
40f120:	8b c3                	mov    %ebx,%eax
40f122:	e8 45 fe ff ff       	call   0x40ef6c
40f127:	59                   	pop    %ecx
40f128:	84 c0                	test   %al,%al
40f12a:	75 b5                	jne    0x40f0e1
40f12c:	8b 85 fc fc ff ff    	mov    -0x304(%ebp),%eax
40f132:	50                   	push   %eax
40f133:	e8 c8 e9 ff ff       	call   0x40db00
40f138:	e8 d3 fc ff ff       	call   0x40ee10
40f13d:	5f                   	pop    %edi
40f13e:	5e                   	pop    %esi
40f13f:	5b                   	pop    %ebx
40f140:	8b e5                	mov    %ebp,%esp
40f142:	5d                   	pop    %ebp
40f143:	c3                   	ret
40f144:	53                   	push   %ebx
40f145:	56                   	push   %esi
40f146:	51                   	push   %ecx
40f147:	8b d8                	mov    %eax,%ebx
40f149:	66 8b 33             	mov    (%ebx),%si
40f14c:	66 83 fe 14          	cmp    $0x14,%si
40f150:	73 0d                	jae    0x40f15f
40f152:	53                   	push   %ebx
40f153:	e8 a8 e9 ff ff       	call   0x40db00
40f158:	e8 b3 fc ff ff       	call   0x40ee10
40f15d:	eb 5b                	jmp    0x40f1ba
40f15f:	66 81 fe 00 01       	cmp    $0x100,%si
40f164:	75 0f                	jne    0x40f175
40f166:	66 c7 03 00 00       	movw   $0x0,(%ebx)
40f16b:	8d 43 08             	lea    0x8(%ebx),%eax
40f16e:	e8 dd 4e ff ff       	call   0x404050
40f173:	eb 45                	jmp    0x40f1ba
40f175:	66 81 fe 01 01       	cmp    $0x101,%si
40f17a:	75 0a                	jne    0x40f186
40f17c:	8b c3                	mov    %ebx,%eax
40f17e:	ff 15 10 58 47 00    	call   *0x475810
40f184:	eb 34                	jmp    0x40f1ba
40f186:	66 f7 c6 00 20       	test   $0x2000,%si
40f18b:	74 09                	je     0x40f196
40f18d:	8b c3                	mov    %ebx,%eax
40f18f:	e8 34 fe ff ff       	call   0x40efc8
40f194:	eb 24                	jmp    0x40f1ba
40f196:	8b d4                	mov    %esp,%edx
40f198:	8b c6                	mov    %esi,%eax
40f19a:	e8 35 55 00 00       	call   0x4146d4
40f19f:	84 c0                	test   %al,%al
40f1a1:	74 0c                	je     0x40f1af
40f1a3:	8b d3                	mov    %ebx,%edx
40f1a5:	8b 04 24             	mov    (%esp),%eax
40f1a8:	8b 08                	mov    (%eax),%ecx
40f1aa:	ff 51 24             	call   *0x24(%ecx)
40f1ad:	eb 0b                	jmp    0x40f1ba
40f1af:	53                   	push   %ebx
40f1b0:	e8 4b e9 ff ff       	call   0x40db00
40f1b5:	e8 56 fc ff ff       	call   0x40ee10
40f1ba:	5a                   	pop    %edx
40f1bb:	5e                   	pop    %esi
40f1bc:	5b                   	pop    %ebx
40f1bd:	c3                   	ret
40f1be:	8b c0                	mov    %eax,%eax
40f1c0:	66 f7 00 e8 bf       	testw  $0xbfe8,(%eax)
40f1c5:	75 06                	jne    0x40f1cd
40f1c7:	66 c7 00 00 00       	movw   $0x0,(%eax)
40f1cc:	c3                   	ret
40f1cd:	e8 72 ff ff ff       	call   0x40f144
40f1d2:	c3                   	ret
40f1d3:	90                   	nop
40f1d4:	50                   	push   %eax
40f1d5:	e8 e6 ff ff ff       	call   0x40f1c0
40f1da:	58                   	pop    %eax
40f1db:	c3                   	ret
40f1dc:	55                   	push   %ebp
40f1dd:	8b ec                	mov    %esp,%ebp
40f1df:	53                   	push   %ebx
40f1e0:	8b 4d 08             	mov    0x8(%ebp),%ecx
40f1e3:	81 c1 00 fd ff ff    	add    $0xfffffd00,%ecx
40f1e9:	8b 54 c1 04          	mov    0x4(%ecx,%eax,8),%edx
40f1ed:	03 14 c1             	add    (%ecx,%eax,8),%edx
40f1f0:	8b 5d 08             	mov    0x8(%ebp),%ebx
40f1f3:	3b 94 83 00 ff ff ff 	cmp    -0x100(%ebx,%eax,4),%edx
40f1fa:	0f 9f c2             	setg   %dl
40f1fd:	48                   	dec    %eax
40f1fe:	84 d2                	test   %dl,%dl
40f200:	74 04                	je     0x40f206
40f202:	85 c0                	test   %eax,%eax
40f204:	7d e3                	jge    0x40f1e9
40f206:	8b c2                	mov    %edx,%eax
40f208:	5b                   	pop    %ebx
40f209:	5d                   	pop    %ebp
40f20a:	c3                   	ret
40f20b:	90                   	nop
40f20c:	55                   	push   %ebp
40f20d:	8b ec                	mov    %esp,%ebp
40f20f:	53                   	push   %ebx
40f210:	56                   	push   %esi
40f211:	b2 01                	mov    $0x1,%dl
40f213:	8b 4d 08             	mov    0x8(%ebp),%ecx
40f216:	ff 84 81 00 ff ff ff 	incl   -0x100(%ecx,%eax,4)
40f21d:	8b 4d 08             	mov    0x8(%ebp),%ecx
40f220:	8b 8c c1 04 fd ff ff 	mov    -0x2fc(%ecx,%eax,8),%ecx
40f227:	8b d9                	mov    %ecx,%ebx
40f229:	8b 75 08             	mov    0x8(%ebp),%esi
40f22c:	03 9c c6 00 fd ff ff 	add    -0x300(%esi,%eax,8),%ebx
40f233:	8b 75 08             	mov    0x8(%ebp),%esi
40f236:	3b 9c 86 00 ff ff ff 	cmp    -0x100(%esi,%eax,4),%ebx
40f23d:	7f 22                	jg     0x40f261
40f23f:	85 c0                	test   %eax,%eax
40f241:	75 04                	jne    0x40f247
40f243:	33 d2                	xor    %edx,%edx
40f245:	eb 1a                	jmp    0x40f261
40f247:	8b 55 08             	mov    0x8(%ebp),%edx
40f24a:	8b 55 08             	mov    0x8(%ebp),%edx
40f24d:	89 8c 82 00 ff ff ff 	mov    %ecx,-0x100(%edx,%eax,4)
40f254:	8b 55 08             	mov    0x8(%ebp),%edx
40f257:	52                   	push   %edx
40f258:	48                   	dec    %eax
40f259:	e8 ae ff ff ff       	call   0x40f20c
40f25e:	59                   	pop    %ecx
40f25f:	8b d0                	mov    %eax,%edx
40f261:	8b c2                	mov    %edx,%eax
40f263:	5e                   	pop    %esi
40f264:	5b                   	pop    %ebx
40f265:	5d                   	pop    %ebp
40f266:	c3                   	ret
40f267:	90                   	nop
40f268:	55                   	push   %ebp
40f269:	8b ec                	mov    %esp,%ebp
40f26b:	81 c4 e0 fc ff ff    	add    $0xfffffce0,%esp
40f271:	53                   	push   %ebx
40f272:	56                   	push   %esi
40f273:	57                   	push   %edi
40f274:	89 8d f8 fc ff ff    	mov    %ecx,-0x308(%ebp)
40f27a:	8b da                	mov    %edx,%ebx
40f27c:	89 85 fc fc ff ff    	mov    %eax,-0x304(%ebp)
40f282:	f6 43 01 20          	testb  $0x20,0x1(%ebx)
40f286:	75 0a                	jne    0x40f292
40f288:	b8 57 00 07 80       	mov    $0x80070057,%eax
40f28d:	e8 7e fb ff ff       	call   0x40ee10
40f292:	66 8b 03             	mov    (%ebx),%ax
40f295:	8b d0                	mov    %eax,%edx
40f297:	66 81 e2 ff 0f       	and    $0xfff,%dx
40f29c:	66 83 fa 0c          	cmp    $0xc,%dx
40f2a0:	0f 85 73 01 00 00    	jne    0x40f419
40f2a6:	f6 c4 40             	test   $0x40,%ah
40f2a9:	74 0d                	je     0x40f2b8
40f2ab:	8b 43 08             	mov    0x8(%ebx),%eax
40f2ae:	8b 00                	mov    (%eax),%eax
40f2b0:	89 85 ec fc ff ff    	mov    %eax,-0x314(%ebp)
40f2b6:	eb 09                	jmp    0x40f2c1
40f2b8:	8b 43 08             	mov    0x8(%ebx),%eax
40f2bb:	89 85 ec fc ff ff    	mov    %eax,-0x314(%ebp)
40f2c1:	8b 85 ec fc ff ff    	mov    -0x314(%ebp),%eax
40f2c7:	0f b7 00             	movzwl (%eax),%eax
40f2ca:	89 85 f0 fc ff ff    	mov    %eax,-0x310(%ebp)
40f2d0:	8b 9d f0 fc ff ff    	mov    -0x310(%ebp),%ebx
40f2d6:	4b                   	dec    %ebx
40f2d7:	85 db                	test   %ebx,%ebx
40f2d9:	7c 6b                	jl     0x40f346
40f2db:	43                   	inc    %ebx
40f2dc:	33 ff                	xor    %edi,%edi
40f2de:	8d b5 00 fd ff ff    	lea    -0x300(%ebp),%esi
40f2e4:	8b c6                	mov    %esi,%eax
40f2e6:	89 85 e0 fc ff ff    	mov    %eax,-0x320(%ebp)
40f2ec:	8b 85 e0 fc ff ff    	mov    -0x320(%ebp),%eax
40f2f2:	83 c0 04             	add    $0x4,%eax
40f2f5:	50                   	push   %eax
40f2f6:	8d 47 01             	lea    0x1(%edi),%eax
40f2f9:	50                   	push   %eax
40f2fa:	8b 85 ec fc ff ff    	mov    -0x314(%ebp),%eax
40f300:	50                   	push   %eax
40f301:	e8 5e ec ff ff       	call   0x40df64
40f306:	e8 05 fb ff ff       	call   0x40ee10
40f30b:	8d 85 f4 fc ff ff    	lea    -0x30c(%ebp),%eax
40f311:	50                   	push   %eax
40f312:	8d 47 01             	lea    0x1(%edi),%eax
40f315:	50                   	push   %eax
40f316:	8b 85 ec fc ff ff    	mov    -0x314(%ebp),%eax
40f31c:	50                   	push   %eax
40f31d:	e8 4a ec ff ff       	call   0x40df6c
40f322:	e8 e9 fa ff ff       	call   0x40ee10
40f327:	8b 85 e0 fc ff ff    	mov    -0x320(%ebp),%eax
40f32d:	8b 95 f4 fc ff ff    	mov    -0x30c(%ebp),%edx
40f333:	2b 50 04             	sub    0x4(%eax),%edx
40f336:	42                   	inc    %edx
40f337:	8b 85 e0 fc ff ff    	mov    -0x320(%ebp),%eax
40f33d:	89 10                	mov    %edx,(%eax)
40f33f:	47                   	inc    %edi
40f340:	83 c6 08             	add    $0x8,%esi
40f343:	4b                   	dec    %ebx
40f344:	75 9e                	jne    0x40f2e4
40f346:	8d 85 00 fd ff ff    	lea    -0x300(%ebp),%eax
40f34c:	50                   	push   %eax
40f34d:	8b 85 f0 fc ff ff    	mov    -0x310(%ebp),%eax
40f353:	50                   	push   %eax
40f354:	6a 0c                	push   $0xc
40f356:	e8 01 ec ff ff       	call   0x40df5c
40f35b:	8b f0                	mov    %eax,%esi
40f35d:	85 f6                	test   %esi,%esi
40f35f:	75 05                	jne    0x40f366
40f361:	e8 02 f8 ff ff       	call   0x40eb68
40f366:	8b 85 fc fc ff ff    	mov    -0x304(%ebp),%eax
40f36c:	e8 4f fe ff ff       	call   0x40f1c0
40f371:	8b 85 fc fc ff ff    	mov    -0x304(%ebp),%eax