40a01a:	ff 76 18             	push   0x18(%esi)
40a01d:	ff 76 08             	push   0x8(%esi)
40a020:	ff 76 10             	push   0x10(%esi)
40a023:	e8 fe 18 00 00       	call   0x40b926
40a028:	83 c4 0c             	add    $0xc,%esp
40a02b:	89 46 04             	mov    %eax,0x4(%esi)
40a02e:	85 c0                	test   %eax,%eax
40a030:	74 78                	je     0x40a0aa
40a032:	83 f8 01             	cmp    $0x1,%eax
40a035:	74 73                	je     0x40a0aa
40a037:	83 f8 ff             	cmp    $0xffffffff,%eax
40a03a:	74 6e                	je     0x40a0aa
40a03c:	8b 56 0c             	mov    0xc(%esi),%edx
40a03f:	f6 c2 82             	test   $0x82,%dl
40a042:	75 37                	jne    0x40a07b
40a044:	8b 4e 10             	mov    0x10(%esi),%ecx
40a047:	57                   	push   %edi
40a048:	83 f9 ff             	cmp    $0xffffffff,%ecx
40a04b:	74 17                	je     0x40a064
40a04d:	8b f9                	mov    %ecx,%edi
40a04f:	c1 ff 05             	sar    $0x5,%edi
40a052:	83 e1 1f             	and    $0x1f,%ecx
40a055:	8b 3c bd c0 1d 41 00 	mov    0x411dc0(,%edi,4),%edi
40a05c:	8d 0c c9             	lea    (%ecx,%ecx,8),%ecx
40a05f:	8d 3c 8f             	lea    (%edi,%ecx,4),%edi
40a062:	eb 05                	jmp    0x40a069
40a064:	bf 08 0e 41 00       	mov    $0x410e08,%edi
40a069:	8a 4f 04             	mov    0x4(%edi),%cl
40a06c:	5f                   	pop    %edi
40a06d:	80 e1 82             	and    $0x82,%cl
40a070:	80 f9 82             	cmp    $0x82,%cl
40a073:	75 06                	jne    0x40a07b
40a075:	80 ce 20             	or     $0x20,%dh
40a078:	89 56 0c             	mov    %edx,0xc(%esi)
40a07b:	81 7e 18 00 02 00 00 	cmpl   $0x200,0x18(%esi)
40a082:	75 14                	jne    0x40a098
40a084:	8b 4e 0c             	mov    0xc(%esi),%ecx
40a087:	f6 c1 08             	test   $0x8,%cl
40a08a:	74 0c                	je     0x40a098
40a08c:	f6 c5 04             	test   $0x4,%ch
40a08f:	75 07                	jne    0x40a098
40a091:	c7 46 18 00 10 00 00 	movl   $0x1000,0x18(%esi)
40a098:	8b 0e                	mov    (%esi),%ecx
40a09a:	83 c0 fe             	add    $0xfffffffe,%eax
40a09d:	89 46 04             	mov    %eax,0x4(%esi)
40a0a0:	0f b7 01             	movzwl (%ecx),%eax
40a0a3:	83 c1 02             	add    $0x2,%ecx
40a0a6:	89 0e                	mov    %ecx,(%esi)
40a0a8:	5e                   	pop    %esi
40a0a9:	c3                   	ret
40a0aa:	f7 d8                	neg    %eax
40a0ac:	1b c0                	sbb    %eax,%eax
40a0ae:	83 e0 10             	and    $0x10,%eax
40a0b1:	83 c0 10             	add    $0x10,%eax
40a0b4:	09 46 0c             	or     %eax,0xc(%esi)
40a0b7:	83 66 04 00          	andl   $0x0,0x4(%esi)
40a0bb:	b8 ff ff 00 00       	mov    $0xffff,%eax
40a0c0:	5e                   	pop    %esi
40a0c1:	c3                   	ret
40a0c2:	55                   	push   %ebp
40a0c3:	8b ec                	mov    %esp,%ebp
40a0c5:	53                   	push   %ebx
40a0c6:	56                   	push   %esi
40a0c7:	be dc 1e 41 00       	mov    $0x411edc,%esi
40a0cc:	57                   	push   %edi
40a0cd:	56                   	push   %esi
40a0ce:	ff 15 d0 d0 40 00    	call   *0x40d0d0
40a0d4:	8b 3d cc d0 40 00    	mov    0x40d0cc,%edi
40a0da:	33 db                	xor    %ebx,%ebx
40a0dc:	39 1d d8 1e 41 00    	cmp    %ebx,0x411ed8
40a0e2:	74 0e                	je     0x40a0f2
40a0e4:	56                   	push   %esi
40a0e5:	ff d7                	call   *%edi
40a0e7:	6a 13                	push   $0x13
40a0e9:	e8 07 cf ff ff       	call   0x406ff5
40a0ee:	59                   	pop    %ecx
40a0ef:	6a 01                	push   $0x1
40a0f1:	5b                   	pop    %ebx
40a0f2:	ff 75 10             	push   0x10(%ebp)
40a0f5:	ff 75 0c             	push   0xc(%ebp)
40a0f8:	ff 75 08             	push   0x8(%ebp)
40a0fb:	e8 1f 00 00 00       	call   0x40a11f
40a100:	83 c4 0c             	add    $0xc,%esp
40a103:	89 45 10             	mov    %eax,0x10(%ebp)
40a106:	85 db                	test   %ebx,%ebx
40a108:	74 0a                	je     0x40a114
40a10a:	6a 13                	push   $0x13
40a10c:	e8 45 cf ff ff       	call   0x407056
40a111:	59                   	pop    %ecx
40a112:	eb 03                	jmp    0x40a117
40a114:	56                   	push   %esi
40a115:	ff d7                	call   *%edi
40a117:	8b 45 10             	mov    0x10(%ebp),%eax
40a11a:	5f                   	pop    %edi
40a11b:	5e                   	pop    %esi
40a11c:	5b                   	pop    %ebx
40a11d:	5d                   	pop    %ebp
40a11e:	c3                   	ret
40a11f:	55                   	push   %ebp
40a120:	8b ec                	mov    %esp,%ebp
40a122:	53                   	push   %ebx
40a123:	56                   	push   %esi
40a124:	8b 75 0c             	mov    0xc(%ebp),%esi
40a127:	33 db                	xor    %ebx,%ebx
40a129:	3b f3                	cmp    %ebx,%esi
40a12b:	74 15                	je     0x40a142
40a12d:	39 5d 10             	cmp    %ebx,0x10(%ebp)
40a130:	74 10                	je     0x40a142
40a132:	8a 06                	mov    (%esi),%al
40a134:	3a c3                	cmp    %bl,%al
40a136:	75 10                	jne    0x40a148
40a138:	8b 45 08             	mov    0x8(%ebp),%eax
40a13b:	3b c3                	cmp    %ebx,%eax
40a13d:	74 03                	je     0x40a142
40a13f:	66 89 18             	mov    %bx,(%eax)
40a142:	33 c0                	xor    %eax,%eax
40a144:	5e                   	pop    %esi
40a145:	5b                   	pop    %ebx
40a146:	5d                   	pop    %ebp
40a147:	c3                   	ret
40a148:	39 1d 6c 18 41 00    	cmp    %ebx,0x41186c
40a14e:	75 13                	jne    0x40a163
40a150:	8b 4d 08             	mov    0x8(%ebp),%ecx
40a153:	3b cb                	cmp    %ebx,%ecx
40a155:	74 07                	je     0x40a15e
40a157:	66 0f b6 c0          	movzbw %al,%ax
40a15b:	66 89 01             	mov    %ax,(%ecx)
40a15e:	6a 01                	push   $0x1
40a160:	58                   	pop    %eax
40a161:	eb e1                	jmp    0x40a144
40a163:	8b 0d ec 09 41 00    	mov    0x4109ec,%ecx
40a169:	0f b6 c0             	movzbl %al,%eax
40a16c:	f6 44 41 01 80       	testb  $0x80,0x1(%ecx,%eax,2)
40a171:	74 4e                	je     0x40a1c1
40a173:	a1 60 0d 41 00       	mov    0x410d60,%eax
40a178:	83 f8 01             	cmp    $0x1,%eax
40a17b:	7e 2a                	jle    0x40a1a7
40a17d:	39 45 10             	cmp    %eax,0x10(%ebp)
40a180:	7c 2f                	jl     0x40a1b1
40a182:	33 c9                	xor    %ecx,%ecx
40a184:	39 5d 08             	cmp    %ebx,0x8(%ebp)
40a187:	0f 95 c1             	setne  %cl
40a18a:	51                   	push   %ecx
40a18b:	ff 75 08             	push   0x8(%ebp)
40a18e:	50                   	push   %eax
40a18f:	56                   	push   %esi
40a190:	6a 09                	push   $0x9
40a192:	ff 35 7c 18 41 00    	push   0x41187c
40a198:	ff 15 d4 d0 40 00    	call   *0x40d0d4
40a19e:	85 c0                	test   %eax,%eax
40a1a0:	a1 60 0d 41 00       	mov    0x410d60,%eax
40a1a5:	75 9d                	jne    0x40a144
40a1a7:	39 45 10             	cmp    %eax,0x10(%ebp)
40a1aa:	72 05                	jb     0x40a1b1
40a1ac:	38 5e 01             	cmp    %bl,0x1(%esi)
40a1af:	75 93                	jne    0x40a144
40a1b1:	e8 28 cf ff ff       	call   0x4070de
40a1b6:	c7 00 2a 00 00 00    	movl   $0x2a,(%eax)
40a1bc:	83 c8 ff             	or     $0xffffffff,%eax
40a1bf:	eb 83                	jmp    0x40a144
40a1c1:	33 c0                	xor    %eax,%eax
40a1c3:	39 5d 08             	cmp    %ebx,0x8(%ebp)
40a1c6:	0f 95 c0             	setne  %al
40a1c9:	50                   	push   %eax
40a1ca:	ff 75 08             	push   0x8(%ebp)
40a1cd:	6a 01                	push   $0x1
40a1cf:	56                   	push   %esi
40a1d0:	6a 09                	push   $0x9
40a1d2:	ff 35 7c 18 41 00    	push   0x41187c
40a1d8:	ff 15 d4 d0 40 00    	call   *0x40d0d4
40a1de:	85 c0                	test   %eax,%eax
40a1e0:	0f 85 78 ff ff ff    	jne    0x40a15e
40a1e6:	eb c9                	jmp    0x40a1b1
40a1e8:	cc                   	int3
40a1e9:	cc                   	int3
40a1ea:	cc                   	int3
40a1eb:	cc                   	int3
40a1ec:	cc                   	int3
40a1ed:	cc                   	int3
40a1ee:	cc                   	int3
40a1ef:	cc                   	int3
40a1f0:	57                   	push   %edi
40a1f1:	8b 7c 24 08          	mov    0x8(%esp),%edi
40a1f5:	eb 6a                	jmp    0x40a261
40a1f7:	8d a4 24 00 00 00 00 	lea    0x0(%esp),%esp
40a1fe:	8b ff                	mov    %edi,%edi
40a200:	8b 4c 24 04          	mov    0x4(%esp),%ecx
40a204:	57                   	push   %edi
40a205:	f7 c1 03 00 00 00    	test   $0x3,%ecx
40a20b:	74 0f                	je     0x40a21c
40a20d:	8a 01                	mov    (%ecx),%al
40a20f:	41                   	inc    %ecx
40a210:	84 c0                	test   %al,%al
40a212:	74 3b                	je     0x40a24f
40a214:	f7 c1 03 00 00 00    	test   $0x3,%ecx
40a21a:	75 f1                	jne    0x40a20d
40a21c:	8b 01                	mov    (%ecx),%eax
40a21e:	ba ff fe fe 7e       	mov    $0x7efefeff,%edx
40a223:	03 d0                	add    %eax,%edx
40a225:	83 f0 ff             	xor    $0xffffffff,%eax
40a228:	33 c2                	xor    %edx,%eax
40a22a:	83 c1 04             	add    $0x4,%ecx
40a22d:	a9 00 01 01 81       	test   $0x81010100,%eax
40a232:	74 e8                	je     0x40a21c
40a234:	8b 41 fc             	mov    -0x4(%ecx),%eax
40a237:	84 c0                	test   %al,%al
40a239:	74 23                	je     0x40a25e
40a23b:	84 e4                	test   %ah,%ah
40a23d:	74 1a                	je     0x40a259
40a23f:	a9 00 00 ff 00       	test   $0xff0000,%eax
40a244:	74 0e                	je     0x40a254
40a246:	a9 00 00 00 ff       	test   $0xff000000,%eax
40a24b:	74 02                	je     0x40a24f
40a24d:	eb cd                	jmp    0x40a21c
40a24f:	8d 79 ff             	lea    -0x1(%ecx),%edi
40a252:	eb 0d                	jmp    0x40a261
40a254:	8d 79 fe             	lea    -0x2(%ecx),%edi
40a257:	eb 08                	jmp    0x40a261
40a259:	8d 79 fd             	lea    -0x3(%ecx),%edi
40a25c:	eb 03                	jmp    0x40a261
40a25e:	8d 79 fc             	lea    -0x4(%ecx),%edi
40a261:	8b 4c 24 0c          	mov    0xc(%esp),%ecx
40a265:	f7 c1 03 00 00 00    	test   $0x3,%ecx
40a26b:	74 19                	je     0x40a286
40a26d:	8a 11                	mov    (%ecx),%dl
40a26f:	41                   	inc    %ecx
40a270:	84 d2                	test   %dl,%dl
40a272:	74 64                	je     0x40a2d8
40a274:	88 17                	mov    %dl,(%edi)
40a276:	47                   	inc    %edi
40a277:	f7 c1 03 00 00 00    	test   $0x3,%ecx
40a27d:	75 ee                	jne    0x40a26d
40a27f:	eb 05                	jmp    0x40a286
40a281:	89 17                	mov    %edx,(%edi)
40a283:	83 c7 04             	add    $0x4,%edi
40a286:	ba ff fe fe 7e       	mov    $0x7efefeff,%edx
40a28b:	8b 01                	mov    (%ecx),%eax
40a28d:	03 d0                	add    %eax,%edx
40a28f:	83 f0 ff             	xor    $0xffffffff,%eax
40a292:	33 c2                	xor    %edx,%eax
40a294:	8b 11                	mov    (%ecx),%edx
40a296:	83 c1 04             	add    $0x4,%ecx
40a299:	a9 00 01 01 81       	test   $0x81010100,%eax
40a29e:	74 e1                	je     0x40a281
40a2a0:	84 d2                	test   %dl,%dl
40a2a2:	74 34                	je     0x40a2d8
40a2a4:	84 f6                	test   %dh,%dh
40a2a6:	74 27                	je     0x40a2cf
40a2a8:	f7 c2 00 00 ff 00    	test   $0xff0000,%edx
40a2ae:	74 12                	je     0x40a2c2
40a2b0:	f7 c2 00 00 00 ff    	test   $0xff000000,%edx
40a2b6:	74 02                	je     0x40a2ba
40a2b8:	eb c7                	jmp    0x40a281
40a2ba:	89 17                	mov    %edx,(%edi)
40a2bc:	8b 44 24 08          	mov    0x8(%esp),%eax
40a2c0:	5f                   	pop    %edi
40a2c1:	c3                   	ret
40a2c2:	66 89 17             	mov    %dx,(%edi)
40a2c5:	8b 44 24 08          	mov    0x8(%esp),%eax
40a2c9:	c6 47 02 00          	movb   $0x0,0x2(%edi)
40a2cd:	5f                   	pop    %edi
40a2ce:	c3                   	ret
40a2cf:	66 89 17             	mov    %dx,(%edi)
40a2d2:	8b 44 24 08          	mov    0x8(%esp),%eax
40a2d6:	5f                   	pop    %edi
40a2d7:	c3                   	ret
40a2d8:	88 17                	mov    %dl,(%edi)
40a2da:	8b 44 24 08          	mov    0x8(%esp),%eax
40a2de:	5f                   	pop    %edi
40a2df:	c3                   	ret
40a2e0:	56                   	push   %esi
40a2e1:	8b 74 24 08          	mov    0x8(%esp),%esi
40a2e5:	8b 06                	mov    (%esi),%eax
40a2e7:	81 38 63 73 6d e0    	cmpl   $0xe06d7363,(%eax)
40a2ed:	75 14                	jne    0x40a303
40a2ef:	83 78 10 03          	cmpl   $0x3,0x10(%eax)
40a2f3:	75 0e                	jne    0x40a303
40a2f5:	81 78 14 20 05 93 19 	cmpl   $0x19930520,0x14(%eax)
40a2fc:	75 05                	jne    0x40a303
40a2fe:	e9 d9 f0 ff ff       	jmp    0x4093dc
40a303:	a1 dc 19 41 00       	mov    0x4119dc,%eax
40a308:	85 c0                	test   %eax,%eax
40a30a:	74 14                	je     0x40a320
40a30c:	50                   	push   %eax
40a30d:	e8 a3 14 00 00       	call   0x40b7b5
40a312:	85 c0                	test   %eax,%eax
40a314:	59                   	pop    %ecx
40a315:	74 09                	je     0x40a320
40a317:	56                   	push   %esi
40a318:	ff 15 dc 19 41 00    	call   *0x4119dc
40a31e:	eb 02                	jmp    0x40a322
40a320:	33 c0                	xor    %eax,%eax
40a322:	5e                   	pop    %esi
40a323:	c2 04 00             	ret    $0x4
40a326:	68 e0 a2 40 00       	push   $0x40a2e0
40a32b:	ff 15 70 d0 40 00    	call   *0x40d070
40a331:	a3 dc 19 41 00       	mov    %eax,0x4119dc
40a336:	c3                   	ret
40a337:	ff 35 dc 19 41 00    	push   0x4119dc
40a33d:	ff 15 70 d0 40 00    	call   *0x40d070
40a343:	c3                   	ret
40a344:	68 40 01 00 00       	push   $0x140
40a349:	6a 00                	push   $0x0
40a34b:	ff 35 a0 1d 41 00    	push   0x411da0
40a351:	ff 15 00 d1 40 00    	call   *0x40d100
40a357:	85 c0                	test   %eax,%eax
40a359:	a3 9c 1d 41 00       	mov    %eax,0x411d9c
40a35e:	75 01                	jne    0x40a361
40a360:	c3                   	ret
40a361:	83 25 94 1d 41 00 00 	andl   $0x0,0x411d94
40a368:	83 25 98 1d 41 00 00 	andl   $0x0,0x411d98
40a36f:	6a 01                	push   $0x1
40a371:	a3 90 1d 41 00       	mov    %eax,0x411d90
40a376:	c7 05 88 1d 41 00 10 	movl   $0x10,0x411d88
40a37d:	00 00 00
40a380:	58                   	pop    %eax
40a381:	c3                   	ret
40a382:	a1 98 1d 41 00       	mov    0x411d98,%eax
40a387:	8d 0c 80             	lea    (%eax,%eax,4),%ecx
40a38a:	a1 9c 1d 41 00       	mov    0x411d9c,%eax
40a38f:	8d 0c 88             	lea    (%eax,%ecx,4),%ecx
40a392:	3b c1                	cmp    %ecx,%eax
40a394:	73 14                	jae    0x40a3aa
40a396:	8b 54 24 04          	mov    0x4(%esp),%edx
40a39a:	2b 50 0c             	sub    0xc(%eax),%edx
40a39d:	81 fa 00 00 10 00    	cmp    $0x100000,%edx
40a3a3:	72 07                	jb     0x40a3ac
40a3a5:	83 c0 14             	add    $0x14,%eax
40a3a8:	eb e8                	jmp    0x40a392
40a3aa:	33 c0                	xor    %eax,%eax
40a3ac:	c3                   	ret
40a3ad:	55                   	push   %ebp
40a3ae:	8b ec                	mov    %esp,%ebp
40a3b0:	83 ec 14             	sub    $0x14,%esp
40a3b3:	8b 55 0c             	mov    0xc(%ebp),%edx
40a3b6:	8b 4d 08             	mov    0x8(%ebp),%ecx
40a3b9:	53                   	push   %ebx
40a3ba:	56                   	push   %esi
40a3bb:	8b 41 10             	mov    0x10(%ecx),%eax
40a3be:	8b f2                	mov    %edx,%esi
40a3c0:	2b 71 0c             	sub    0xc(%ecx),%esi
40a3c3:	8b 5a fc             	mov    -0x4(%edx),%ebx
40a3c6:	83 c2 fc             	add    $0xfffffffc,%edx
40a3c9:	57                   	push   %edi
40a3ca:	c1 ee 0f             	shr    $0xf,%esi
40a3cd:	8b ce                	mov    %esi,%ecx
40a3cf:	8b 7a fc             	mov    -0x4(%edx),%edi
40a3d2:	69 c9 04 02 00 00    	imul   $0x204,%ecx,%ecx
40a3d8:	4b                   	dec    %ebx
40a3d9:	89 7d fc             	mov    %edi,-0x4(%ebp)