40a0d1:	75 d3                	jne    0x40a0a6
40a0d3:	41                   	inc    %ecx
40a0d4:	41                   	inc    %ecx
40a0d5:	0f b7 01             	movzwl (%ecx),%eax
40a0d8:	66 85 c0             	test   %ax,%ax
40a0db:	75 da                	jne    0x40a0b7
40a0dd:	68 60 a6 42 00       	push   $0x42a660
40a0e2:	56                   	push   %esi
40a0e3:	e8 1e 23 01 00       	call   0x41c406
40a0e8:	59                   	pop    %ecx
40a0e9:	59                   	pop    %ecx
40a0ea:	85 c0                	test   %eax,%eax
40a0ec:	75 03                	jne    0x40a0f1
40a0ee:	40                   	inc    %eax
40a0ef:	eb 02                	jmp    0x40a0f3
40a0f1:	33 c0                	xor    %eax,%eax
40a0f3:	5e                   	pop    %esi
40a0f4:	c2 04 00             	ret    $0x4
40a0f7:	56                   	push   %esi
40a0f8:	57                   	push   %edi
40a0f9:	8b 7c 24 0c          	mov    0xc(%esp),%edi
40a0fd:	66 83 3f 00          	cmpw   $0x0,(%edi)
40a101:	8b f7                	mov    %edi,%esi
40a103:	0f 84 9c 00 00 00    	je     0x40a1a5
40a109:	53                   	push   %ebx
40a10a:	6a 02                	push   $0x2
40a10c:	5b                   	pop    %ebx
40a10d:	2b df                	sub    %edi,%ebx
40a10f:	80 7c 24 14 00       	cmpb   $0x0,0x14(%esp)
40a114:	b8 60 a6 42 00       	mov    $0x42a660,%eax
40a119:	75 05                	jne    0x40a120
40a11b:	b8 70 a6 42 00       	mov    $0x42a670,%eax
40a120:	0f b7 0e             	movzwl (%esi),%ecx
40a123:	51                   	push   %ecx
40a124:	50                   	push   %eax
40a125:	e8 1f 23 01 00       	call   0x41c449
40a12a:	59                   	pop    %ecx
40a12b:	59                   	pop    %ecx
40a12c:	85 c0                	test   %eax,%eax
40a12e:	75 0c                	jne    0x40a13c
40a130:	38 44 24 14          	cmp    %al,0x14(%esp)
40a134:	74 0c                	je     0x40a142
40a136:	66 83 3e 20          	cmpw   $0x20,(%esi)
40a13a:	73 06                	jae    0x40a142
40a13c:	6a 5f                	push   $0x5f
40a13e:	58                   	pop    %eax
40a13f:	66 89 06             	mov    %ax,(%esi)
40a142:	8d 44 33 fe          	lea    -0x2(%ebx,%esi,1),%eax
40a146:	83 e0 fe             	and    $0xfffffffe,%eax
40a149:	83 f8 02             	cmp    $0x2,%eax
40a14c:	7e 0c                	jle    0x40a15a
40a14e:	66 83 3e 3a          	cmpw   $0x3a,(%esi)
40a152:	75 06                	jne    0x40a15a
40a154:	6a 5f                	push   $0x5f
40a156:	58                   	pop    %eax
40a157:	66 89 06             	mov    %ax,(%esi)
40a15a:	0f b7 06             	movzwl (%esi),%eax
40a15d:	66 83 f8 20          	cmp    $0x20,%ax
40a161:	74 21                	je     0x40a184
40a163:	66 83 f8 2e          	cmp    $0x2e,%ax
40a167:	75 2f                	jne    0x40a198
40a169:	3b f7                	cmp    %edi,%esi
40a16b:	76 2b                	jbe    0x40a198
40a16d:	0f b7 4e fe          	movzwl -0x2(%esi),%ecx
40a171:	0f b7 c1             	movzwl %cx,%eax
40a174:	50                   	push   %eax
40a175:	e8 5d fe ff ff       	call   0x409fd7
40a17a:	84 c0                	test   %al,%al
40a17c:	75 1a                	jne    0x40a198
40a17e:	66 83 f9 2e          	cmp    $0x2e,%cx
40a182:	74 14                	je     0x40a198
40a184:	0f b7 46 02          	movzwl 0x2(%esi),%eax
40a188:	50                   	push   %eax
40a189:	e8 49 fe ff ff       	call   0x409fd7
40a18e:	84 c0                	test   %al,%al
40a190:	74 06                	je     0x40a198
40a192:	6a 5f                	push   $0x5f
40a194:	58                   	pop    %eax
40a195:	66 89 06             	mov    %ax,(%esi)
40a198:	46                   	inc    %esi
40a199:	46                   	inc    %esi
40a19a:	66 83 3e 00          	cmpw   $0x0,(%esi)
40a19e:	0f 85 6b ff ff ff    	jne    0x40a10f
40a1a4:	5b                   	pop    %ebx
40a1a5:	5f                   	pop    %edi
40a1a6:	5e                   	pop    %esi
40a1a7:	c2 08 00             	ret    $0x8
40a1aa:	53                   	push   %ebx
40a1ab:	8b 5c 24 0c          	mov    0xc(%esp),%ebx
40a1af:	56                   	push   %esi
40a1b0:	8b 74 24 14          	mov    0x14(%esp),%esi
40a1b4:	57                   	push   %edi
40a1b5:	33 ff                	xor    %edi,%edi
40a1b7:	4e                   	dec    %esi
40a1b8:	74 29                	je     0x40a1e3
40a1ba:	8b 44 24 10          	mov    0x10(%esp),%eax
40a1be:	8b d3                	mov    %ebx,%edx
40a1c0:	2b d0                	sub    %eax,%edx
40a1c2:	0f b7 08             	movzwl (%eax),%ecx
40a1c5:	66 85 c9             	test   %cx,%cx
40a1c8:	74 19                	je     0x40a1e3
40a1ca:	66 83 f9 2f          	cmp    $0x2f,%cx
40a1ce:	75 05                	jne    0x40a1d5
40a1d0:	6a 5c                	push   $0x5c
40a1d2:	59                   	pop    %ecx
40a1d3:	eb 03                	jmp    0x40a1d8
40a1d5:	0f b7 c9             	movzwl %cx,%ecx
40a1d8:	66 89 0c 02          	mov    %cx,(%edx,%eax,1)
40a1dc:	47                   	inc    %edi
40a1dd:	40                   	inc    %eax
40a1de:	40                   	inc    %eax
40a1df:	3b fe                	cmp    %esi,%edi
40a1e1:	72 df                	jb     0x40a1c2
40a1e3:	33 c0                	xor    %eax,%eax
40a1e5:	66 89 04 7b          	mov    %ax,(%ebx,%edi,2)
40a1e9:	5f                   	pop    %edi
40a1ea:	5e                   	pop    %esi
40a1eb:	5b                   	pop    %ebx
40a1ec:	c2 0c 00             	ret    $0xc
40a1ef:	56                   	push   %esi
40a1f0:	8b 74 24 08          	mov    0x8(%esp),%esi
40a1f4:	0f b7 06             	movzwl (%esi),%eax
40a1f7:	50                   	push   %eax
40a1f8:	e8 d8 66 00 00       	call   0x4108d5
40a1fd:	0f b7 c0             	movzwl %ax,%eax
40a200:	83 c0 bf             	add    $0xffffffbf,%eax
40a203:	66 83 f8 19          	cmp    $0x19,%ax
40a207:	77 0c                	ja     0x40a215
40a209:	66 83 7e 02 3a       	cmpw   $0x3a,0x2(%esi)
40a20e:	75 05                	jne    0x40a215
40a210:	33 c0                	xor    %eax,%eax
40a212:	40                   	inc    %eax
40a213:	eb 02                	jmp    0x40a217
40a215:	33 c0                	xor    %eax,%eax
40a217:	5e                   	pop    %esi
40a218:	c2 04 00             	ret    $0x4
40a21b:	56                   	push   %esi
40a21c:	57                   	push   %edi
40a21d:	6a 3b                	push   $0x3b
40a21f:	ff 74 24 10          	push   0x10(%esp)
40a223:	33 ff                	xor    %edi,%edi
40a225:	e8 45 22 01 00       	call   0x41c46f
40a22a:	8b f0                	mov    %eax,%esi
40a22c:	59                   	pop    %ecx
40a22d:	59                   	pop    %ecx
40a22e:	85 f6                	test   %esi,%esi
40a230:	74 17                	je     0x40a249
40a232:	8d 46 02             	lea    0x2(%esi),%eax
40a235:	50                   	push   %eax
40a236:	e8 7f 79 00 00       	call   0x411bba
40a23b:	80 7c 24 10 00       	cmpb   $0x0,0x10(%esp)
40a240:	8b f8                	mov    %eax,%edi
40a242:	74 05                	je     0x40a249
40a244:	33 c0                	xor    %eax,%eax
40a246:	66 89 06             	mov    %ax,(%esi)
40a249:	8b c7                	mov    %edi,%eax
40a24b:	5f                   	pop    %edi
40a24c:	5e                   	pop    %esi
40a24d:	c2 08 00             	ret    $0x8
40a250:	55                   	push   %ebp
40a251:	8b ec                	mov    %esp,%ebp
40a253:	8b 45 0c             	mov    0xc(%ebp),%eax
40a256:	56                   	push   %esi
40a257:	57                   	push   %edi
40a258:	8b 7d 14             	mov    0x14(%ebp),%edi
40a25b:	85 c0                	test   %eax,%eax
40a25d:	74 1a                	je     0x40a279
40a25f:	66 83 38 00          	cmpw   $0x0,(%eax)
40a263:	74 14                	je     0x40a279
40a265:	8b 75 10             	mov    0x10(%ebp),%esi
40a268:	3b f0                	cmp    %eax,%esi
40a26a:	74 27                	je     0x40a293
40a26c:	57                   	push   %edi
40a26d:	50                   	push   %eax
40a26e:	56                   	push   %esi
40a26f:	e8 3d 21 01 00       	call   0x41c3b1
40a274:	83 c4 0c             	add    $0xc,%esp
40a277:	eb 1a                	jmp    0x40a293
40a279:	83 7d 08 00          	cmpl   $0x0,0x8(%ebp)
40a27d:	8b 75 10             	mov    0x10(%ebp),%esi
40a280:	74 0c                	je     0x40a28e
40a282:	57                   	push   %edi
40a283:	56                   	push   %esi
40a284:	ff 75 08             	push   0x8(%ebp)
40a287:	e8 e8 74 00 00       	call   0x411774
40a28c:	eb 05                	jmp    0x40a293
40a28e:	33 c0                	xor    %eax,%eax
40a290:	66 89 06             	mov    %ax,(%esi)
40a293:	85 ff                	test   %edi,%edi
40a295:	76 07                	jbe    0x40a29e
40a297:	33 c0                	xor    %eax,%eax
40a299:	66 89 44 7e fe       	mov    %ax,-0x2(%esi,%edi,2)
40a29e:	5f                   	pop    %edi
40a29f:	8b c6                	mov    %esi,%eax
40a2a1:	5e                   	pop    %esi
40a2a2:	5d                   	pop    %ebp
40a2a3:	c2 10 00             	ret    $0x10
40a2a6:	56                   	push   %esi
40a2a7:	8b 74 24 08          	mov    0x8(%esp),%esi
40a2ab:	56                   	push   %esi
40a2ac:	e8 da fe 00 00       	call   0x41a18b
40a2b1:	59                   	pop    %ecx
40a2b2:	8b c8                	mov    %eax,%ecx
40a2b4:	eb 0e                	jmp    0x40a2c4
40a2b6:	0f b7 04 4e          	movzwl (%esi,%ecx,2),%eax
40a2ba:	50                   	push   %eax
40a2bb:	e8 17 fd ff ff       	call   0x409fd7
40a2c0:	84 c0                	test   %al,%al
40a2c2:	75 19                	jne    0x40a2dd
40a2c4:	49                   	dec    %ecx
40a2c5:	79 ef                	jns    0x40a2b6
40a2c7:	66 83 3e 00          	cmpw   $0x0,(%esi)
40a2cb:	74 0a                	je     0x40a2d7
40a2cd:	66 83 7e 02 3a       	cmpw   $0x3a,0x2(%esi)
40a2d2:	8d 46 04             	lea    0x4(%esi),%eax
40a2d5:	74 02                	je     0x40a2d9
40a2d7:	8b c6                	mov    %esi,%eax
40a2d9:	5e                   	pop    %esi
40a2da:	c2 04 00             	ret    $0x4
40a2dd:	8d 44 4e 02          	lea    0x2(%esi,%ecx,2),%eax
40a2e1:	eb f6                	jmp    0x40a2d9
40a2e3:	55                   	push   %ebp
40a2e4:	8b ec                	mov    %esp,%ebp
40a2e6:	b8 00 10 00 00       	mov    $0x1000,%eax
40a2eb:	e8 e0 01 01 00       	call   0x41a4d0
40a2f0:	8b 45 08             	mov    0x8(%ebp),%eax
40a2f3:	0f b7 08             	movzwl (%eax),%ecx
40a2f6:	57                   	push   %edi
40a2f7:	8b f8                	mov    %eax,%edi
40a2f9:	66 85 c9             	test   %cx,%cx
40a2fc:	74 3f                	je     0x40a33d
40a2fe:	0f b7 d1             	movzwl %cx,%edx
40a301:	8d 48 04             	lea    0x4(%eax),%ecx
40a304:	0f b7 c2             	movzwl %dx,%eax
40a307:	50                   	push   %eax
40a308:	e8 ca fc ff ff       	call   0x409fd7
40a30d:	84 c0                	test   %al,%al
40a30f:	74 1e                	je     0x40a32f
40a311:	66 83 79 fe 2e       	cmpw   $0x2e,-0x2(%ecx)
40a316:	75 17                	jne    0x40a32f
40a318:	66 83 39 2e          	cmpw   $0x2e,(%ecx)
40a31c:	75 11                	jne    0x40a32f
40a31e:	0f b7 41 02          	movzwl 0x2(%ecx),%eax
40a322:	50                   	push   %eax
40a323:	e8 af fc ff ff       	call   0x409fd7
40a328:	84 c0                	test   %al,%al
40a32a:	74 03                	je     0x40a32f
40a32c:	8d 79 04             	lea    0x4(%ecx),%edi
40a32f:	41                   	inc    %ecx
40a330:	0f b7 41 fd          	movzwl -0x3(%ecx),%eax
40a334:	41                   	inc    %ecx
40a335:	0f b7 d0             	movzwl %ax,%edx
40a338:	66 85 c0             	test   %ax,%ax
40a33b:	75 c7                	jne    0x40a304
40a33d:	66 83 3f 00          	cmpw   $0x0,(%edi)
40a341:	0f 84 81 00 00 00    	je     0x40a3c8
40a347:	56                   	push   %esi
40a348:	66 83 3f 00          	cmpw   $0x0,(%edi)
40a34c:	8b f7                	mov    %edi,%esi
40a34e:	74 0a                	je     0x40a35a
40a350:	66 83 7f 02 3a       	cmpw   $0x3a,0x2(%edi)
40a355:	75 03                	jne    0x40a35a
40a357:	8d 77 04             	lea    0x4(%edi),%esi
40a35a:	66 83 3e 5c          	cmpw   $0x5c,(%esi)
40a35e:	75 2c                	jne    0x40a38c
40a360:	66 83 7e 02 5c       	cmpw   $0x5c,0x2(%esi)
40a365:	75 25                	jne    0x40a38c
40a367:	8d 46 04             	lea    0x4(%esi),%eax
40a36a:	6a 5c                	push   $0x5c
40a36c:	50                   	push   %eax
40a36d:	e8 d7 20 01 00       	call   0x41c449
40a372:	59                   	pop    %ecx
40a373:	59                   	pop    %ecx
40a374:	85 c0                	test   %eax,%eax
40a376:	74 14                	je     0x40a38c
40a378:	83 c0 02             	add    $0x2,%eax
40a37b:	6a 5c                	push   $0x5c
40a37d:	50                   	push   %eax
40a37e:	e8 c6 20 01 00       	call   0x41c449
40a383:	59                   	pop    %ecx
40a384:	59                   	pop    %ecx
40a385:	85 c0                	test   %eax,%eax
40a387:	74 03                	je     0x40a38c
40a389:	8d 70 02             	lea    0x2(%eax),%esi
40a38c:	0f b7 06             	movzwl (%esi),%eax
40a38f:	8b d6                	mov    %esi,%edx
40a391:	66 85 c0             	test   %ax,%ax
40a394:	74 25                	je     0x40a3bb
40a396:	0f b7 c8             	movzwl %ax,%ecx
40a399:	0f b7 c1             	movzwl %cx,%eax
40a39c:	50                   	push   %eax
40a39d:	e8 35 fc ff ff       	call   0x409fd7
40a3a2:	84 c0                	test   %al,%al
40a3a4:	74 05                	je     0x40a3ab
40a3a6:	8d 72 02             	lea    0x2(%edx),%esi
40a3a9:	eb 06                	jmp    0x40a3b1
40a3ab:	66 83 f9 2e          	cmp    $0x2e,%cx
40a3af:	75 0a                	jne    0x40a3bb
40a3b1:	42                   	inc    %edx
40a3b2:	42                   	inc    %edx
40a3b3:	0f b7 0a             	movzwl (%edx),%ecx
40a3b6:	66 85 c9             	test   %cx,%cx
40a3b9:	75 de                	jne    0x40a399
40a3bb:	3b f7                	cmp    %edi,%esi
40a3bd:	74 08                	je     0x40a3c7
40a3bf:	66 83 3e 00          	cmpw   $0x0,(%esi)
40a3c3:	8b fe                	mov    %esi,%edi
40a3c5:	75 81                	jne    0x40a348
40a3c7:	5e                   	pop    %esi
40a3c8:	66 83 3f 2e          	cmpw   $0x2e,(%edi)
40a3cc:	75 12                	jne    0x40a3e0
40a3ce:	66 83 7f 02 2e       	cmpw   $0x2e,0x2(%edi)
40a3d3:	75 0b                	jne    0x40a3e0
40a3d5:	8d 47 04             	lea    0x4(%edi),%eax
40a3d8:	66 83 38 00          	cmpw   $0x0,(%eax)
40a3dc:	75 02                	jne    0x40a3e0
40a3de:	8b f8                	mov    %eax,%edi
40a3e0:	83 7d 0c 00          	cmpl   $0x0,0xc(%ebp)
40a3e4:	74 23                	je     0x40a409
40a3e6:	68 00 08 00 00       	push   $0x800
40a3eb:	57                   	push   %edi
40a3ec:	8d 85 00 f0 ff ff    	lea    -0x1000(%ebp),%eax
40a3f2:	50                   	push   %eax
40a3f3:	e8 27 65 00 00       	call   0x41091f
40a3f8:	8d 85 00 f0 ff ff    	lea    -0x1000(%ebp),%eax
40a3fe:	50                   	push   %eax
40a3ff:	ff 75 0c             	push   0xc(%ebp)
40a402:	e8 cc fd 00 00       	call   0x41a1d3
40a407:	59                   	pop    %ecx
40a408:	59                   	pop    %ecx
40a409:	8b c7                	mov    %edi,%eax
40a40b:	5f                   	pop    %edi
40a40c:	c9                   	leave
40a40d:	c2 08 00             	ret    $0x8
40a410:	ff 74 24 04          	push   0x4(%esp)
40a414:	e8 8d fe ff ff       	call   0x40a2a6
40a419:	8b 54 24 0c          	mov    0xc(%esp),%edx
40a41d:	8b c8                	mov    %eax,%ecx
40a41f:	2b 4c 24 04          	sub    0x4(%esp),%ecx
40a423:	d1 f9                	sar    $1,%ecx
40a425:	2b d1                	sub    %ecx,%edx
40a427:	52                   	push   %edx
40a428:	ff 74 24 0c          	push   0xc(%esp)
40a42c:	50                   	push   %eax
40a42d:	e8 ed 64 00 00       	call   0x41091f
40a432:	c2 0c 00             	ret    $0xc
40a435:	33 c0                	xor    %eax,%eax
40a437:	39 44 24 04          	cmp    %eax,0x4(%esp)
40a43b:	74 13                	je     0x40a450
40a43d:	ff 74 24 04          	push   0x4(%esp)