40e117:	8d 48 9f             	lea    -0x61(%eax),%ecx
40e11a:	eb 08                	jmp    0x40e124
40e11c:	8d 48 9f             	lea    -0x61(%eax),%ecx
40e11f:	83 f9 19             	cmp    $0x19,%ecx
40e122:	77 4f                	ja     0x40e173
40e124:	83 f9 19             	cmp    $0x19,%ecx
40e127:	77 03                	ja     0x40e12c
40e129:	83 c0 e0             	add    $0xffffffe0,%eax
40e12c:	8b 4d 0c             	mov    0xc(%ebp),%ecx
40e12f:	83 c0 c9             	add    $0xffffffc9,%eax
40e132:	85 c0                	test   %eax,%eax
40e134:	75 3d                	jne    0x40e173
40e136:	0f b7 01             	movzwl (%ecx),%eax
40e139:	83 c1 02             	add    $0x2,%ecx
40e13c:	89 4d 0c             	mov    %ecx,0xc(%ebp)
40e13f:	83 f8 78             	cmp    $0x78,%eax
40e142:	74 1a                	je     0x40e15e
40e144:	83 f8 58             	cmp    $0x58,%eax
40e147:	74 15                	je     0x40e15e
40e149:	85 ff                	test   %edi,%edi
40e14b:	75 06                	jne    0x40e153
40e14d:	6a 08                	push   $0x8
40e14f:	5f                   	pop    %edi
40e150:	89 7d 14             	mov    %edi,0x14(%ebp)
40e153:	50                   	push   %eax
40e154:	8d 4d 0c             	lea    0xc(%ebp),%ecx
40e157:	e8 2f 37 00 00       	call   0x41188b
40e15c:	eb 1f                	jmp    0x40e17d
40e15e:	85 ff                	test   %edi,%edi
40e160:	75 06                	jne    0x40e168
40e162:	6a 10                	push   $0x10
40e164:	5f                   	pop    %edi
40e165:	89 7d 14             	mov    %edi,0x14(%ebp)
40e168:	0f b7 31             	movzwl (%ecx),%esi
40e16b:	83 c1 02             	add    $0x2,%ecx
40e16e:	89 4d 0c             	mov    %ecx,0xc(%ebp)
40e171:	eb 0a                	jmp    0x40e17d
40e173:	85 ff                	test   %edi,%edi
40e175:	75 06                	jne    0x40e17d
40e177:	6a 0a                	push   $0xa
40e179:	5f                   	pop    %edi
40e17a:	89 7d 14             	mov    %edi,0x14(%ebp)
40e17d:	83 c8 ff             	or     $0xffffffff,%eax
40e180:	33 d2                	xor    %edx,%edx
40e182:	f7 f7                	div    %edi
40e184:	8b f8                	mov    %eax,%edi
40e186:	6a 30                	push   $0x30
40e188:	58                   	pop    %eax
40e189:	66 3b f0             	cmp    %ax,%si
40e18c:	0f 82 4c 01 00 00    	jb     0x40e2de
40e192:	6a 3a                	push   $0x3a
40e194:	59                   	pop    %ecx
40e195:	66 3b f1             	cmp    %cx,%si
40e198:	0f 82 36 01 00 00    	jb     0x40e2d4
40e19e:	b8 10 ff 00 00       	mov    $0xff10,%eax
40e1a3:	66 3b f0             	cmp    %ax,%si
40e1a6:	0f 83 1f 01 00 00    	jae    0x40e2cb
40e1ac:	8b 45 f8             	mov    -0x8(%ebp),%eax
40e1af:	66 3b f0             	cmp    %ax,%si
40e1b2:	0f 82 26 01 00 00    	jb     0x40e2de
40e1b8:	66 3b 75 f4          	cmp    -0xc(%ebp),%si
40e1bc:	0f 82 12 01 00 00    	jb     0x40e2d4
40e1c2:	8b 45 f0             	mov    -0x10(%ebp),%eax
40e1c5:	66 3b f0             	cmp    %ax,%si
40e1c8:	0f 82 10 01 00 00    	jb     0x40e2de
40e1ce:	66 3b 75 ec          	cmp    -0x14(%ebp),%si
40e1d2:	0f 82 fc 00 00 00    	jb     0x40e2d4
40e1d8:	8b 45 e8             	mov    -0x18(%ebp),%eax
40e1db:	66 3b f0             	cmp    %ax,%si
40e1de:	0f 82 fa 00 00 00    	jb     0x40e2de
40e1e4:	66 3b 75 e4          	cmp    -0x1c(%ebp),%si
40e1e8:	0f 82 e6 00 00 00    	jb     0x40e2d4
40e1ee:	8b 45 e0             	mov    -0x20(%ebp),%eax
40e1f1:	66 3b f0             	cmp    %ax,%si
40e1f4:	0f 82 e4 00 00 00    	jb     0x40e2de
40e1fa:	66 3b 75 dc          	cmp    -0x24(%ebp),%si
40e1fe:	0f 82 d0 00 00 00    	jb     0x40e2d4
40e204:	8b 45 d8             	mov    -0x28(%ebp),%eax
40e207:	66 3b f0             	cmp    %ax,%si
40e20a:	0f 82 ce 00 00 00    	jb     0x40e2de
40e210:	66 3b 75 d4          	cmp    -0x2c(%ebp),%si
40e214:	0f 82 ba 00 00 00    	jb     0x40e2d4
40e21a:	8b 45 d0             	mov    -0x30(%ebp),%eax
40e21d:	66 3b f0             	cmp    %ax,%si
40e220:	0f 82 b8 00 00 00    	jb     0x40e2de
40e226:	66 3b 75 cc          	cmp    -0x34(%ebp),%si
40e22a:	0f 82 a4 00 00 00    	jb     0x40e2d4
40e230:	8b 45 c8             	mov    -0x38(%ebp),%eax
40e233:	66 3b f0             	cmp    %ax,%si
40e236:	0f 82 a2 00 00 00    	jb     0x40e2de
40e23c:	66 3b 75 c4          	cmp    -0x3c(%ebp),%si
40e240:	0f 82 8e 00 00 00    	jb     0x40e2d4
40e246:	8b 45 c0             	mov    -0x40(%ebp),%eax
40e249:	66 3b f0             	cmp    %ax,%si
40e24c:	0f 82 8c 00 00 00    	jb     0x40e2de
40e252:	66 3b 75 bc          	cmp    -0x44(%ebp),%si
40e256:	72 7c                	jb     0x40e2d4
40e258:	8b 45 b8             	mov    -0x48(%ebp),%eax
40e25b:	66 3b f0             	cmp    %ax,%si
40e25e:	72 7e                	jb     0x40e2de
40e260:	66 3b 75 b4          	cmp    -0x4c(%ebp),%si
40e264:	72 6e                	jb     0x40e2d4
40e266:	8b 45 b0             	mov    -0x50(%ebp),%eax
40e269:	66 3b f0             	cmp    %ax,%si
40e26c:	72 70                	jb     0x40e2de
40e26e:	66 3b 75 ac          	cmp    -0x54(%ebp),%si
40e272:	72 60                	jb     0x40e2d4
40e274:	8b 45 a8             	mov    -0x58(%ebp),%eax
40e277:	66 3b f0             	cmp    %ax,%si
40e27a:	72 62                	jb     0x40e2de
40e27c:	66 3b 75 a4          	cmp    -0x5c(%ebp),%si
40e280:	72 52                	jb     0x40e2d4
40e282:	8b 45 a0             	mov    -0x60(%ebp),%eax
40e285:	66 3b f0             	cmp    %ax,%si
40e288:	72 54                	jb     0x40e2de
40e28a:	66 3b 75 9c          	cmp    -0x64(%ebp),%si
40e28e:	72 44                	jb     0x40e2d4
40e290:	8b 45 98             	mov    -0x68(%ebp),%eax
40e293:	66 3b f0             	cmp    %ax,%si
40e296:	72 46                	jb     0x40e2de
40e298:	66 3b 75 94          	cmp    -0x6c(%ebp),%si
40e29c:	72 36                	jb     0x40e2d4
40e29e:	8b 45 90             	mov    -0x70(%ebp),%eax
40e2a1:	66 3b f0             	cmp    %ax,%si
40e2a4:	72 38                	jb     0x40e2de
40e2a6:	66 3b 75 8c          	cmp    -0x74(%ebp),%si
40e2aa:	72 28                	jb     0x40e2d4
40e2ac:	8b 45 88             	mov    -0x78(%ebp),%eax
40e2af:	66 3b f0             	cmp    %ax,%si
40e2b2:	72 2a                	jb     0x40e2de
40e2b4:	66 3b 75 84          	cmp    -0x7c(%ebp),%si
40e2b8:	72 1a                	jb     0x40e2d4
40e2ba:	8b 45 80             	mov    -0x80(%ebp),%eax
40e2bd:	66 3b f0             	cmp    %ax,%si
40e2c0:	72 1c                	jb     0x40e2de
40e2c2:	66 3b b5 7c ff ff ff 	cmp    -0x84(%ebp),%si
40e2c9:	eb 07                	jmp    0x40e2d2
40e2cb:	66 3b b5 78 ff ff ff 	cmp    -0x88(%ebp),%si
40e2d2:	73 0a                	jae    0x40e2de
40e2d4:	0f b7 ce             	movzwl %si,%ecx
40e2d7:	2b c8                	sub    %eax,%ecx
40e2d9:	83 f9 ff             	cmp    $0xffffffff,%ecx
40e2dc:	75 2e                	jne    0x40e30c
40e2de:	0f b7 ce             	movzwl %si,%ecx
40e2e1:	83 f9 41             	cmp    $0x41,%ecx
40e2e4:	72 05                	jb     0x40e2eb
40e2e6:	83 f9 5a             	cmp    $0x5a,%ecx
40e2e9:	76 0b                	jbe    0x40e2f6
40e2eb:	83 f9 61             	cmp    $0x61,%ecx
40e2ee:	72 19                	jb     0x40e309
40e2f0:	66 83 fe 7a          	cmp    $0x7a,%si
40e2f4:	77 13                	ja     0x40e309
40e2f6:	6a 19                	push   $0x19
40e2f8:	8d 46 9f             	lea    -0x61(%esi),%eax
40e2fb:	5a                   	pop    %edx
40e2fc:	66 3b c2             	cmp    %dx,%ax
40e2ff:	77 03                	ja     0x40e304
40e301:	83 c1 e0             	add    $0xffffffe0,%ecx
40e304:	83 c1 c9             	add    $0xffffffc9,%ecx
40e307:	eb 03                	jmp    0x40e30c
40e309:	83 c9 ff             	or     $0xffffffff,%ecx
40e30c:	8b 55 14             	mov    0x14(%ebp),%edx
40e30f:	3b ca                	cmp    %edx,%ecx
40e311:	73 34                	jae    0x40e347
40e313:	8b 45 fc             	mov    -0x4(%ebp),%eax
40e316:	0f af c2             	imul   %edx,%eax
40e319:	8d 14 08             	lea    (%eax,%ecx,1),%edx
40e31c:	3b d0                	cmp    %eax,%edx
40e31e:	1b c9                	sbb    %ecx,%ecx
40e320:	f7 d9                	neg    %ecx
40e322:	3b 7d fc             	cmp    -0x4(%ebp),%edi
40e325:	89 55 fc             	mov    %edx,-0x4(%ebp)
40e328:	1b c0                	sbb    %eax,%eax
40e32a:	f7 d8                	neg    %eax
40e32c:	0b c8                	or     %eax,%ecx
40e32e:	c1 e1 02             	shl    $0x2,%ecx
40e331:	83 c9 08             	or     $0x8,%ecx
40e334:	0b d9                	or     %ecx,%ebx
40e336:	8b 4d 0c             	mov    0xc(%ebp),%ecx
40e339:	0f b7 31             	movzwl (%ecx),%esi
40e33c:	83 c1 02             	add    $0x2,%ecx
40e33f:	89 4d 0c             	mov    %ecx,0xc(%ebp)
40e342:	e9 3f fe ff ff       	jmp    0x40e186
40e347:	56                   	push   %esi
40e348:	8d 4d 0c             	lea    0xc(%ebp),%ecx
40e34b:	e8 3b 35 00 00       	call   0x41188b
40e350:	f6 c3 08             	test   $0x8,%bl
40e353:	75 13                	jne    0x40e368
40e355:	8b 45 10             	mov    0x10(%ebp),%eax
40e358:	85 c0                	test   %eax,%eax
40e35a:	74 08                	je     0x40e364
40e35c:	8b 8d 70 ff ff ff    	mov    -0x90(%ebp),%ecx
40e362:	89 08                	mov    %ecx,(%eax)
40e364:	33 c0                	xor    %eax,%eax
40e366:	eb 65                	jmp    0x40e3cd
40e368:	8b 75 fc             	mov    -0x4(%ebp),%esi
40e36b:	56                   	push   %esi
40e36c:	53                   	push   %ebx
40e36d:	e8 b0 f7 ff ff       	call   0x40db22
40e372:	59                   	pop    %ecx
40e373:	59                   	pop    %ecx
40e374:	84 c0                	test   %al,%al
40e376:	74 40                	je     0x40e3b8
40e378:	8b 45 08             	mov    0x8(%ebp),%eax
40e37b:	c6 40 1c 01          	movb   $0x1,0x1c(%eax)
40e37f:	c7 40 18 22 00 00 00 	movl   $0x22,0x18(%eax)
40e386:	f6 c3 01             	test   $0x1,%bl
40e389:	75 05                	jne    0x40e390
40e38b:	83 ce ff             	or     $0xffffffff,%esi
40e38e:	eb 2f                	jmp    0x40e3bf
40e390:	8b 4d 10             	mov    0x10(%ebp),%ecx
40e393:	f6 c3 02             	test   $0x2,%bl
40e396:	74 10                	je     0x40e3a8
40e398:	85 c9                	test   %ecx,%ecx
40e39a:	74 05                	je     0x40e3a1
40e39c:	8b 45 0c             	mov    0xc(%ebp),%eax
40e39f:	89 01                	mov    %eax,(%ecx)
40e3a1:	b8 00 00 00 80       	mov    $0x80000000,%eax
40e3a6:	eb 25                	jmp    0x40e3cd
40e3a8:	85 c9                	test   %ecx,%ecx
40e3aa:	74 05                	je     0x40e3b1
40e3ac:	8b 45 0c             	mov    0xc(%ebp),%eax
40e3af:	89 01                	mov    %eax,(%ecx)
40e3b1:	b8 ff ff ff 7f       	mov    $0x7fffffff,%eax
40e3b6:	eb 15                	jmp    0x40e3cd
40e3b8:	f6 c3 02             	test   $0x2,%bl
40e3bb:	74 02                	je     0x40e3bf
40e3bd:	f7 de                	neg    %esi
40e3bf:	8b 55 10             	mov    0x10(%ebp),%edx
40e3c2:	85 d2                	test   %edx,%edx
40e3c4:	74 05                	je     0x40e3cb
40e3c6:	8b 4d 0c             	mov    0xc(%ebp),%ecx
40e3c9:	89 0a                	mov    %ecx,(%edx)
40e3cb:	8b c6                	mov    %esi,%eax
40e3cd:	5f                   	pop    %edi
40e3ce:	5e                   	pop    %esi
40e3cf:	5b                   	pop    %ebx
40e3d0:	c9                   	leave
40e3d1:	c3                   	ret
40e3d2:	8b ff                	mov    %edi,%edi
40e3d4:	56                   	push   %esi
40e3d5:	8b f1                	mov    %ecx,%esi
40e3d7:	57                   	push   %edi
40e3d8:	8b be 04 04 00 00    	mov    0x404(%esi),%edi
40e3de:	e8 0b f6 ff ff       	call   0x40d9ee
40e3e3:	85 ff                	test   %edi,%edi
40e3e5:	75 04                	jne    0x40e3eb
40e3e7:	03 c6                	add    %esi,%eax
40e3e9:	eb 02                	jmp    0x40e3ed
40e3eb:	03 c7                	add    %edi,%eax
40e3ed:	5f                   	pop    %edi
40e3ee:	5e                   	pop    %esi
40e3ef:	c3                   	ret
40e3f0:	8b ff                	mov    %edi,%edi
40e3f2:	55                   	push   %ebp
40e3f3:	8b ec                	mov    %esp,%ebp
40e3f5:	83 ec 0c             	sub    $0xc,%esp
40e3f8:	53                   	push   %ebx
40e3f9:	56                   	push   %esi
40e3fa:	8b f1                	mov    %ecx,%esi
40e3fc:	57                   	push   %edi
40e3fd:	ff 76 28             	push   0x28(%esi)
40e400:	e8 a8 2c 00 00       	call   0x4110ad
40e405:	59                   	pop    %ecx
40e406:	8b c8                	mov    %eax,%ecx
40e408:	89 45 f4             	mov    %eax,-0xc(%ebp)
40e40b:	6a 00                	push   $0x0
40e40d:	5b                   	pop    %ebx
40e40e:	83 e9 01             	sub    $0x1,%ecx
40e411:	0f 84 99 00 00 00    	je     0x40e4b0
40e417:	83 e9 01             	sub    $0x1,%ecx
40e41a:	74 75                	je     0x40e491
40e41c:	49                   	dec    %ecx
40e41d:	83 e9 01             	sub    $0x1,%ecx
40e420:	74 46                	je     0x40e468
40e422:	83 e9 04             	sub    $0x4,%ecx
40e425:	74 27                	je     0x40e44e
40e427:	8b 46 08             	mov    0x8(%esi),%eax
40e42a:	83 c0 18             	add    $0x18,%eax
40e42d:	c6 40 04 01          	movb   $0x1,0x4(%eax)
40e431:	c7 00 16 00 00 00    	movl   $0x16,(%eax)
40e437:	ff 76 08             	push   0x8(%esi)
40e43a:	53                   	push   %ebx
40e43b:	53                   	push   %ebx
40e43c:	53                   	push   %ebx
40e43d:	53                   	push   %ebx
40e43e:	53                   	push   %ebx
40e43f:	e8 2d ef ff ff       	call   0x40d371
40e444:	83 c4 18             	add    $0x18,%esp
40e447:	32 c0                	xor    %al,%al
40e449:	e9 28 01 00 00       	jmp    0x40e576
40e44e:	8b 4e 10             	mov    0x10(%esi),%ecx
40e451:	8b 7e 1c             	mov    0x1c(%esi),%edi
40e454:	8b c7                	mov    %edi,%eax
40e456:	c1 e8 04             	shr    $0x4,%eax
40e459:	a8 01                	test   $0x1,%al
40e45b:	8d 41 08             	lea    0x8(%ecx),%eax
40e45e:	89 46 10             	mov    %eax,0x10(%esi)
40e461:	8b 01                	mov    (%ecx),%eax
40e463:	8b 51 04             	mov    0x4(%ecx),%edx
40e466:	eb 66                	jmp    0x40e4ce
40e468:	8b 7e 1c             	mov    0x1c(%esi),%edi
40e46b:	8b c7                	mov    %edi,%eax
40e46d:	c1 e8 04             	shr    $0x4,%eax
40e470:	a8 01                	test   $0x1,%al
40e472:	74 0d                	je     0x40e481
40e474:	8b 46 10             	mov    0x10(%esi),%eax
40e477:	8d 48 04             	lea    0x4(%eax),%ecx
40e47a:	89 4e 10             	mov    %ecx,0x10(%esi)
40e47d:	8b 00                	mov    (%eax),%eax
40e47f:	eb 4c                	jmp    0x40e4cd
40e481:	8b 4e 10             	mov    0x10(%esi),%ecx
40e484:	89 5d f8             	mov    %ebx,-0x8(%ebp)
40e487:	8d 41 04             	lea    0x4(%ecx),%eax
40e48a:	89 46 10             	mov    %eax,0x10(%esi)
40e48d:	8b 01                	mov    (%ecx),%eax
40e48f:	eb 40                	jmp    0x40e4d1
40e491:	8b 7e 1c             	mov    0x1c(%esi),%edi
40e494:	8b c7                	mov    %edi,%eax
40e496:	8b 4e 10             	mov    0x10(%esi),%ecx
40e499:	c1 e8 04             	shr    $0x4,%eax
40e49c:	a8 01                	test   $0x1,%al
40e49e:	8d 41 04             	lea    0x4(%ecx),%eax
40e4a1:	89 46 10             	mov    %eax,0x10(%esi)
40e4a4:	74 05                	je     0x40e4ab
40e4a6:	0f bf 01             	movswl (%ecx),%eax
40e4a9:	eb 22                	jmp    0x40e4cd
40e4ab:	0f b7 01             	movzwl (%ecx),%eax
40e4ae:	eb 1d                	jmp    0x40e4cd
40e4b0:	8b 7e 1c             	mov    0x1c(%esi),%edi
40e4b3:	8b c7                	mov    %edi,%eax
40e4b5:	8b 4e 10             	mov    0x10(%esi),%ecx
40e4b8:	c1 e8 04             	shr    $0x4,%eax
40e4bb:	a8 01                	test   $0x1,%al
40e4bd:	8d 41 04             	lea    0x4(%ecx),%eax
40e4c0:	89 46 10             	mov    %eax,0x10(%esi)
40e4c3:	74 05                	je     0x40e4ca
40e4c5:	0f be 01             	movsbl (%ecx),%eax
40e4c8:	eb 03                	jmp    0x40e4cd
40e4ca:	0f b6 01             	movzbl (%ecx),%eax
40e4cd:	99                   	cltd
40e4ce:	89 55 f8             	mov    %edx,-0x8(%ebp)
40e4d1:	8b 55 f8             	mov    -0x8(%ebp),%edx
40e4d4:	89 45 fc             	mov    %eax,-0x4(%ebp)
40e4d7:	8b c7                	mov    %edi,%eax
40e4d9:	8b 4d fc             	mov    -0x4(%ebp),%ecx
40e4dc:	c1 e8 04             	shr    $0x4,%eax
40e4df:	a8 01                	test   $0x1,%al
40e4e1:	74 16                	je     0x40e4f9
40e4e3:	3b d3                	cmp    %ebx,%edx