40f0ab:	75 12                	jne    0x40f0bf
40f0ad:	83 3e 2a             	cmpl   $0x2a,(%esi)
40f0b0:	75 13                	jne    0x40f0c5
40f0b2:	50                   	push   %eax
40f0b3:	6a 3f                	push   $0x3f
40f0b5:	8b cb                	mov    %ebx,%ecx
40f0b7:	e8 fe fc ff ff       	call   0x40edba
40f0bc:	8b 45 10             	mov    0x10(%ebp),%eax
40f0bf:	47                   	inc    %edi
40f0c0:	3b 7d fc             	cmp    -0x4(%ebp),%edi
40f0c3:	75 d4                	jne    0x40f099
40f0c5:	8b 4d f8             	mov    -0x8(%ebp),%ecx
40f0c8:	83 3e 00             	cmpl   $0x0,(%esi)
40f0cb:	75 06                	jne    0x40f0d3
40f0cd:	85 c9                	test   %ecx,%ecx
40f0cf:	74 02                	je     0x40f0d3
40f0d1:	89 0e                	mov    %ecx,(%esi)
40f0d3:	5f                   	pop    %edi
40f0d4:	5e                   	pop    %esi
40f0d5:	5b                   	pop    %ebx
40f0d6:	8b e5                	mov    %ebp,%esp
40f0d8:	5d                   	pop    %ebp
40f0d9:	c2 10 00             	ret    $0x10
40f0dc:	8b ff                	mov    %edi,%edi
40f0de:	55                   	push   %ebp
40f0df:	8b ec                	mov    %esp,%ebp
40f0e1:	51                   	push   %ecx
40f0e2:	51                   	push   %ecx
40f0e3:	53                   	push   %ebx
40f0e4:	8b d9                	mov    %ecx,%ebx
40f0e6:	8b 03                	mov    (%ebx),%eax
40f0e8:	8b 40 0c             	mov    0xc(%eax),%eax
40f0eb:	c1 e8 0c             	shr    $0xc,%eax
40f0ee:	a8 01                	test   $0x1,%al
40f0f0:	74 12                	je     0x40f104
40f0f2:	8b 03                	mov    (%ebx),%eax
40f0f4:	83 78 04 00          	cmpl   $0x0,0x4(%eax)
40f0f8:	75 0a                	jne    0x40f104
40f0fa:	8b 4d 10             	mov    0x10(%ebp),%ecx
40f0fd:	8b 45 0c             	mov    0xc(%ebp),%eax
40f100:	01 01                	add    %eax,(%ecx)
40f102:	eb 5e                	jmp    0x40f162
40f104:	8b 45 0c             	mov    0xc(%ebp),%eax
40f107:	56                   	push   %esi
40f108:	8b 75 14             	mov    0x14(%ebp),%esi
40f10b:	57                   	push   %edi
40f10c:	8b 7d 08             	mov    0x8(%ebp),%edi
40f10f:	8b 0e                	mov    (%esi),%ecx
40f111:	83 26 00             	andl   $0x0,(%esi)
40f114:	8d 04 47             	lea    (%edi,%eax,2),%eax
40f117:	89 4d f8             	mov    %ecx,-0x8(%ebp)
40f11a:	89 45 fc             	mov    %eax,-0x4(%ebp)
40f11d:	3b f8                	cmp    %eax,%edi
40f11f:	74 34                	je     0x40f155
40f121:	8b 45 10             	mov    0x10(%ebp),%eax
40f124:	50                   	push   %eax
40f125:	0f b7 07             	movzwl (%edi),%eax
40f128:	8b cb                	mov    %ebx,%ecx
40f12a:	50                   	push   %eax
40f12b:	e8 c7 fc ff ff       	call   0x40edf7
40f130:	8b 45 10             	mov    0x10(%ebp),%eax
40f133:	83 38 ff             	cmpl   $0xffffffff,(%eax)
40f136:	75 12                	jne    0x40f14a
40f138:	83 3e 2a             	cmpl   $0x2a,(%esi)
40f13b:	75 15                	jne    0x40f152
40f13d:	50                   	push   %eax
40f13e:	6a 3f                	push   $0x3f
40f140:	8b cb                	mov    %ebx,%ecx
40f142:	e8 b0 fc ff ff       	call   0x40edf7
40f147:	8b 45 10             	mov    0x10(%ebp),%eax
40f14a:	83 c7 02             	add    $0x2,%edi
40f14d:	3b 7d fc             	cmp    -0x4(%ebp),%edi
40f150:	75 d2                	jne    0x40f124
40f152:	8b 4d f8             	mov    -0x8(%ebp),%ecx
40f155:	83 3e 00             	cmpl   $0x0,(%esi)
40f158:	75 06                	jne    0x40f160
40f15a:	85 c9                	test   %ecx,%ecx
40f15c:	74 02                	je     0x40f160
40f15e:	89 0e                	mov    %ecx,(%esi)
40f160:	5f                   	pop    %edi
40f161:	5e                   	pop    %esi
40f162:	5b                   	pop    %ebx
40f163:	8b e5                	mov    %ebp,%esp
40f165:	5d                   	pop    %ebp
40f166:	c2 10 00             	ret    $0x10
40f169:	8b ff                	mov    %edi,%edi
40f16b:	55                   	push   %ebp
40f16c:	8b ec                	mov    %esp,%ebp
40f16e:	51                   	push   %ecx
40f16f:	51                   	push   %ecx
40f170:	56                   	push   %esi
40f171:	57                   	push   %edi
40f172:	8b 7d 14             	mov    0x14(%ebp),%edi
40f175:	8b c1                	mov    %ecx,%eax
40f177:	89 45 f8             	mov    %eax,-0x8(%ebp)
40f17a:	8b 0f                	mov    (%edi),%ecx
40f17c:	83 27 00             	andl   $0x0,(%edi)
40f17f:	8b 00                	mov    (%eax),%eax
40f181:	89 4d fc             	mov    %ecx,-0x4(%ebp)
40f184:	8b 70 04             	mov    0x4(%eax),%esi
40f187:	39 70 08             	cmp    %esi,0x8(%eax)
40f18a:	75 18                	jne    0x40f1a4
40f18c:	80 78 0c 00          	cmpb   $0x0,0xc(%eax)
40f190:	74 0a                	je     0x40f19c
40f192:	8b 4d 10             	mov    0x10(%ebp),%ecx
40f195:	8b 45 0c             	mov    0xc(%ebp),%eax
40f198:	01 01                	add    %eax,(%ecx)
40f19a:	eb 4a                	jmp    0x40f1e6
40f19c:	8b 45 10             	mov    0x10(%ebp),%eax
40f19f:	83 08 ff             	orl    $0xffffffff,(%eax)
40f1a2:	eb 45                	jmp    0x40f1e9
40f1a4:	2b 70 08             	sub    0x8(%eax),%esi
40f1a7:	53                   	push   %ebx
40f1a8:	8b 5d 0c             	mov    0xc(%ebp),%ebx
40f1ab:	3b f3                	cmp    %ebx,%esi
40f1ad:	72 02                	jb     0x40f1b1
40f1af:	8b f3                	mov    %ebx,%esi
40f1b1:	56                   	push   %esi
40f1b2:	ff 75 08             	push   0x8(%ebp)
40f1b5:	ff 30                	push   (%eax)
40f1b7:	e8 a4 92 ff ff       	call   0x408460
40f1bc:	8b 4d f8             	mov    -0x8(%ebp),%ecx
40f1bf:	83 c4 0c             	add    $0xc,%esp
40f1c2:	8b 01                	mov    (%ecx),%eax
40f1c4:	01 30                	add    %esi,(%eax)
40f1c6:	8b 01                	mov    (%ecx),%eax
40f1c8:	01 70 08             	add    %esi,0x8(%eax)
40f1cb:	8b 01                	mov    (%ecx),%eax
40f1cd:	80 78 0c 00          	cmpb   $0x0,0xc(%eax)
40f1d1:	8b 45 10             	mov    0x10(%ebp),%eax
40f1d4:	74 04                	je     0x40f1da
40f1d6:	01 18                	add    %ebx,(%eax)
40f1d8:	eb 0b                	jmp    0x40f1e5
40f1da:	3b f3                	cmp    %ebx,%esi
40f1dc:	74 05                	je     0x40f1e3
40f1de:	83 08 ff             	orl    $0xffffffff,(%eax)
40f1e1:	eb 02                	jmp    0x40f1e5
40f1e3:	01 30                	add    %esi,(%eax)
40f1e5:	5b                   	pop    %ebx
40f1e6:	8b 4d fc             	mov    -0x4(%ebp),%ecx
40f1e9:	83 3f 00             	cmpl   $0x0,(%edi)
40f1ec:	75 06                	jne    0x40f1f4
40f1ee:	85 c9                	test   %ecx,%ecx
40f1f0:	74 02                	je     0x40f1f4
40f1f2:	89 0f                	mov    %ecx,(%edi)
40f1f4:	5f                   	pop    %edi
40f1f5:	5e                   	pop    %esi
40f1f6:	8b e5                	mov    %ebp,%esp
40f1f8:	5d                   	pop    %ebp
40f1f9:	c2 10 00             	ret    $0x10
40f1fc:	8b ff                	mov    %edi,%edi
40f1fe:	55                   	push   %ebp
40f1ff:	8b ec                	mov    %esp,%ebp
40f201:	83 ec 2c             	sub    $0x2c,%esp
40f204:	8b 45 1c             	mov    0x1c(%ebp),%eax
40f207:	8b 55 10             	mov    0x10(%ebp),%edx
40f20a:	8b 4d 14             	mov    0x14(%ebp),%ecx
40f20d:	89 45 f0             	mov    %eax,-0x10(%ebp)
40f210:	8b 45 18             	mov    0x18(%ebp),%eax
40f213:	89 45 f8             	mov    %eax,-0x8(%ebp)
40f216:	8b 45 08             	mov    0x8(%ebp),%eax
40f219:	89 45 e8             	mov    %eax,-0x18(%ebp)
40f21c:	8b 45 0c             	mov    0xc(%ebp),%eax
40f21f:	89 4d f4             	mov    %ecx,-0xc(%ebp)
40f222:	89 55 fc             	mov    %edx,-0x4(%ebp)
40f225:	89 45 ec             	mov    %eax,-0x14(%ebp)
40f228:	85 d2                	test   %edx,%edx
40f22a:	75 15                	jne    0x40f241
40f22c:	e8 3a 58 00 00       	call   0x414a6b
40f231:	c7 00 16 00 00 00    	movl   $0x16,(%eax)
40f237:	e8 a6 ca ff ff       	call   0x40bce2
40f23c:	83 c8 ff             	or     $0xffffffff,%eax
40f23f:	eb 2e                	jmp    0x40f26f
40f241:	85 c9                	test   %ecx,%ecx
40f243:	74 e7                	je     0x40f22c
40f245:	8d 45 fc             	lea    -0x4(%ebp),%eax
40f248:	89 45 d4             	mov    %eax,-0x2c(%ebp)
40f24b:	8d 45 f8             	lea    -0x8(%ebp),%eax
40f24e:	89 45 d8             	mov    %eax,-0x28(%ebp)
40f251:	8d 45 e8             	lea    -0x18(%ebp),%eax
40f254:	89 45 dc             	mov    %eax,-0x24(%ebp)
40f257:	8d 45 f4             	lea    -0xc(%ebp),%eax
40f25a:	89 45 e0             	mov    %eax,-0x20(%ebp)
40f25d:	8d 45 f0             	lea    -0x10(%ebp),%eax
40f260:	89 45 e4             	mov    %eax,-0x1c(%ebp)
40f263:	8d 45 d4             	lea    -0x2c(%ebp),%eax
40f266:	50                   	push   %eax
40f267:	52                   	push   %edx
40f268:	e8 06 cd ff ff       	call   0x40bf73
40f26d:	59                   	pop    %ecx
40f26e:	59                   	pop    %ecx
40f26f:	8b e5                	mov    %ebp,%esp
40f271:	5d                   	pop    %ebp
40f272:	c3                   	ret
40f273:	8b ff                	mov    %edi,%edi
40f275:	55                   	push   %ebp
40f276:	8b ec                	mov    %esp,%ebp
40f278:	83 ec 2c             	sub    $0x2c,%esp
40f27b:	8b 45 1c             	mov    0x1c(%ebp),%eax
40f27e:	8b 55 10             	mov    0x10(%ebp),%edx
40f281:	8b 4d 14             	mov    0x14(%ebp),%ecx
40f284:	89 45 f0             	mov    %eax,-0x10(%ebp)
40f287:	8b 45 18             	mov    0x18(%ebp),%eax
40f28a:	89 45 f8             	mov    %eax,-0x8(%ebp)
40f28d:	8b 45 08             	mov    0x8(%ebp),%eax
40f290:	89 45 e8             	mov    %eax,-0x18(%ebp)
40f293:	8b 45 0c             	mov    0xc(%ebp),%eax
40f296:	89 4d f4             	mov    %ecx,-0xc(%ebp)
40f299:	89 55 fc             	mov    %edx,-0x4(%ebp)
40f29c:	89 45 ec             	mov    %eax,-0x14(%ebp)
40f29f:	85 d2                	test   %edx,%edx
40f2a1:	75 15                	jne    0x40f2b8
40f2a3:	e8 c3 57 00 00       	call   0x414a6b
40f2a8:	c7 00 16 00 00 00    	movl   $0x16,(%eax)
40f2ae:	e8 2f ca ff ff       	call   0x40bce2
40f2b3:	83 c8 ff             	or     $0xffffffff,%eax
40f2b6:	eb 2e                	jmp    0x40f2e6
40f2b8:	85 c9                	test   %ecx,%ecx
40f2ba:	74 e7                	je     0x40f2a3
40f2bc:	8d 45 fc             	lea    -0x4(%ebp),%eax
40f2bf:	89 45 d4             	mov    %eax,-0x2c(%ebp)
40f2c2:	8d 45 f8             	lea    -0x8(%ebp),%eax
40f2c5:	89 45 d8             	mov    %eax,-0x28(%ebp)
40f2c8:	8d 45 e8             	lea    -0x18(%ebp),%eax
40f2cb:	89 45 dc             	mov    %eax,-0x24(%ebp)
40f2ce:	8d 45 f4             	lea    -0xc(%ebp),%eax
40f2d1:	89 45 e0             	mov    %eax,-0x20(%ebp)
40f2d4:	8d 45 f0             	lea    -0x10(%ebp),%eax
40f2d7:	89 45 e4             	mov    %eax,-0x1c(%ebp)
40f2da:	8d 45 d4             	lea    -0x2c(%ebp),%eax
40f2dd:	50                   	push   %eax
40f2de:	52                   	push   %edx
40f2df:	e8 67 cc ff ff       	call   0x40bf4b
40f2e4:	59                   	pop    %ecx
40f2e5:	59                   	pop    %ecx
40f2e6:	8b e5                	mov    %ebp,%esp
40f2e8:	5d                   	pop    %ebp
40f2e9:	c3                   	ret
40f2ea:	8b ff                	mov    %edi,%edi
40f2ec:	55                   	push   %ebp
40f2ed:	8b ec                	mov    %esp,%ebp
40f2ef:	ff 75 20             	push   0x20(%ebp)
40f2f2:	ff 75 1c             	push   0x1c(%ebp)
40f2f5:	ff 75 18             	push   0x18(%ebp)
40f2f8:	ff 75 14             	push   0x14(%ebp)
40f2fb:	ff 75 10             	push   0x10(%ebp)
40f2fe:	ff 75 0c             	push   0xc(%ebp)
40f301:	ff 75 08             	push   0x8(%ebp)
40f304:	e8 92 cc ff ff       	call   0x40bf9b
40f309:	83 c4 1c             	add    $0x1c,%esp
40f30c:	5d                   	pop    %ebp
40f30d:	c3                   	ret
40f30e:	8b ff                	mov    %edi,%edi
40f310:	55                   	push   %ebp
40f311:	8b ec                	mov    %esp,%ebp
40f313:	8b 4d 08             	mov    0x8(%ebp),%ecx
40f316:	81 49 04 00 00 00 80 	orl    $0x80000000,0x4(%ecx)
40f31d:	8b 01                	mov    (%ecx),%eax
40f31f:	81 49 04 00 00 f0 7f 	orl    $0x7ff00000,0x4(%ecx)
40f326:	89 01                	mov    %eax,(%ecx)
40f328:	8b 41 04             	mov    0x4(%ecx),%eax
40f32b:	25 00 00 f8 ff       	and    $0xfff80000,%eax
40f330:	0d 00 00 08 00       	or     $0x80000,%eax
40f335:	83 21 00             	andl   $0x0,(%ecx)
40f338:	89 41 04             	mov    %eax,0x4(%ecx)
40f33b:	5d                   	pop    %ebp
40f33c:	c3                   	ret
40f33d:	8b ff                	mov    %edi,%edi
40f33f:	55                   	push   %ebp
40f340:	8b ec                	mov    %esp,%ebp
40f342:	33 c0                	xor    %eax,%eax
40f344:	38 45 08             	cmp    %al,0x8(%ebp)
40f347:	56                   	push   %esi
40f348:	8b 75 0c             	mov    0xc(%ebp),%esi
40f34b:	0f 95 c0             	setne  %al
40f34e:	99                   	cltd
40f34f:	c1 e0 1f             	shl    $0x1f,%eax
40f352:	33 d2                	xor    %edx,%edx
40f354:	8b 4e 04             	mov    0x4(%esi),%ecx
40f357:	0b 16                	or     (%esi),%edx
40f359:	81 e1 ff ff ff 7f    	and    $0x7fffffff,%ecx
40f35f:	0b c1                	or     %ecx,%eax
40f361:	89 46 04             	mov    %eax,0x4(%esi)
40f364:	8b c2                	mov    %edx,%eax
40f366:	81 4e 04 00 00 f0 7f 	orl    $0x7ff00000,0x4(%esi)
40f36d:	89 06                	mov    %eax,(%esi)
40f36f:	83 26 00             	andl   $0x0,(%esi)
40f372:	81 66 04 00 00 f0 ff 	andl   $0xfff00000,0x4(%esi)
40f379:	5e                   	pop    %esi
40f37a:	5d                   	pop    %ebp
40f37b:	c3                   	ret
40f37c:	8b ff                	mov    %edi,%edi
40f37e:	55                   	push   %ebp
40f37f:	8b ec                	mov    %esp,%ebp
40f381:	33 c0                	xor    %eax,%eax
40f383:	38 45 08             	cmp    %al,0x8(%ebp)
40f386:	56                   	push   %esi
40f387:	8b 75 0c             	mov    0xc(%ebp),%esi
40f38a:	0f 95 c0             	setne  %al
40f38d:	99                   	cltd
40f38e:	c1 e0 1f             	shl    $0x1f,%eax
40f391:	33 d2                	xor    %edx,%edx
40f393:	8b 4e 04             	mov    0x4(%esi),%ecx
40f396:	0b 16                	or     (%esi),%edx
40f398:	81 e1 ff ff ff 7f    	and    $0x7fffffff,%ecx
40f39e:	0b c1                	or     %ecx,%eax
40f3a0:	89 46 04             	mov    %eax,0x4(%esi)
40f3a3:	8b c2                	mov    %edx,%eax
40f3a5:	81 4e 04 00 00 f0 7f 	orl    $0x7ff00000,0x4(%esi)
40f3ac:	89 06                	mov    %eax,(%esi)
40f3ae:	83 0e ff             	orl    $0xffffffff,(%esi)
40f3b1:	81 4e 04 ff ff 0f 00 	orl    $0xfffff,0x4(%esi)
40f3b8:	5e                   	pop    %esi
40f3b9:	5d                   	pop    %ebp
40f3ba:	c3                   	ret
40f3bb:	8b ff                	mov    %edi,%edi
40f3bd:	55                   	push   %ebp
40f3be:	8b ec                	mov    %esp,%ebp
40f3c0:	33 c0                	xor    %eax,%eax
40f3c2:	38 45 08             	cmp    %al,0x8(%ebp)
40f3c5:	56                   	push   %esi
40f3c6:	8b 75 0c             	mov    0xc(%ebp),%esi
40f3c9:	0f 95 c0             	setne  %al
40f3cc:	99                   	cltd
40f3cd:	c1 e0 1f             	shl    $0x1f,%eax
40f3d0:	33 d2                	xor    %edx,%edx
40f3d2:	8b 4e 04             	mov    0x4(%esi),%ecx
40f3d5:	0b 16                	or     (%esi),%edx
40f3d7:	81 e1 ff ff ff 7f    	and    $0x7fffffff,%ecx
40f3dd:	0b c1                	or     %ecx,%eax
40f3df:	89 46 04             	mov    %eax,0x4(%esi)
40f3e2:	8b c2                	mov    %edx,%eax
40f3e4:	81 4e 04 00 00 f0 7f 	orl    $0x7ff00000,0x4(%esi)
40f3eb:	8b c8                	mov    %eax,%ecx
40f3ed:	81 66 04 00 00 f0 ff 	andl   $0xfff00000,0x4(%esi)
40f3f4:	83 e1 01             	and    $0x1,%ecx
40f3f7:	83 c9 01             	or     $0x1,%ecx
40f3fa:	89 0e                	mov    %ecx,(%esi)
40f3fc:	5e                   	pop    %esi
40f3fd:	5d                   	pop    %ebp
40f3fe:	c3                   	ret
40f3ff:	8b ff                	mov    %edi,%edi
40f401:	55                   	push   %ebp
40f402:	8b ec                	mov    %esp,%ebp
40f404:	8b 4d 0c             	mov    0xc(%ebp),%ecx
40f407:	0f b6 45 08          	movzbl 0x8(%ebp),%eax
40f40b:	c1 e0 1f             	shl    $0x1f,%eax
40f40e:	8d 49 7f             	lea    0x7f(%ecx),%ecx
40f411:	c1 e1 17             	shl    $0x17,%ecx
40f414:	81 e1 00 00 80 7f    	and    $0x7f800000,%ecx