409f3f:	33 c0                	xor    %eax,%eax
409f41:	8d 8d e0 fd ff ff    	lea    -0x220(%ebp),%ecx
409f47:	83 c4 0c             	add    $0xc,%esp
409f4a:	38 45 ec             	cmp    %al,-0x14(%ebp)
409f4d:	0f 94 c0             	sete   %al
409f50:	48                   	dec    %eax
409f51:	25 e3 7e 00 00       	and    $0x7ee3,%eax
409f56:	05 04 01 00 00       	add    $0x104,%eax
409f5b:	50                   	push   %eax
409f5c:	e8 8f 44 00 00       	call   0x40e3f0
409f61:	85 c0                	test   %eax,%eax
409f63:	0f 88 74 01 00 00    	js     0x40a0dd
409f69:	8b 77 34             	mov    0x34(%edi),%esi
409f6c:	85 f6                	test   %esi,%esi
409f6e:	74 6d                	je     0x409fdd
409f70:	8b 4e 04             	mov    0x4(%esi),%ecx
409f73:	8b f9                	mov    %ecx,%edi
409f75:	8d 57 02             	lea    0x2(%edi),%edx
409f78:	66 8b 07             	mov    (%edi),%ax
409f7b:	83 c7 02             	add    $0x2,%edi
409f7e:	66 3b 85 dc fd ff ff 	cmp    -0x224(%ebp),%ax
409f85:	75 f1                	jne    0x409f78
409f87:	2b fa                	sub    %edx,%edi
409f89:	d1 ff                	sar    $1,%edi
409f8b:	e8 d0 60 00 00       	call   0x410060
409f90:	8b 4e 04             	mov    0x4(%esi),%ecx
409f93:	8d 57 01             	lea    0x1(%edi),%edx
409f96:	50                   	push   %eax
409f97:	e8 04 54 00 00       	call   0x40f3a0
409f9c:	33 c0                	xor    %eax,%eax
409f9e:	39 46 08             	cmp    %eax,0x8(%esi)
409fa1:	75 2b                	jne    0x409fce
409fa3:	8b 56 04             	mov    0x4(%esi),%edx
409fa6:	8b ca                	mov    %edx,%ecx
409fa8:	8d 79 02             	lea    0x2(%ecx),%edi
409fab:	66 8b 01             	mov    (%ecx),%ax
409fae:	83 c1 02             	add    $0x2,%ecx
409fb1:	66 3b 85 dc fd ff ff 	cmp    -0x224(%ebp),%ax
409fb8:	75 f1                	jne    0x409fab
409fba:	2b cf                	sub    %edi,%ecx
409fbc:	d1 f9                	sar    $1,%ecx
409fbe:	49                   	dec    %ecx
409fbf:	3b cb                	cmp    %ebx,%ecx
409fc1:	7e 0b                	jle    0x409fce
409fc3:	66 83 3c 4a 3a       	cmpw   $0x3a,(%edx,%ecx,2)
409fc8:	0f 84 7e 23 01 00    	je     0x41c34c
409fce:	8b 46 14             	mov    0x14(%esi),%eax
409fd1:	8b f0                	mov    %eax,%esi
409fd3:	85 c0                	test   %eax,%eax
409fd5:	75 99                	jne    0x409f70
409fd7:	8b bd d8 fd ff ff    	mov    -0x228(%ebp),%edi
409fdd:	8b b5 d4 fd ff ff    	mov    -0x22c(%ebp),%esi
409fe3:	83 fe 03             	cmp    $0x3,%esi
409fe6:	0f 84 6b 23 01 00    	je     0x41c357
409fec:	6a 10                	push   $0x10
409fee:	59                   	pop    %ecx
409fef:	e8 dc 3c 00 00       	call   0x40dcd0
409ff4:	89 85 dc fd ff ff    	mov    %eax,-0x224(%ebp)
409ffa:	85 c0                	test   %eax,%eax
409ffc:	0f 84 1f 01 00 00    	je     0x40a121
40a002:	8b 0d 74 67 43 00    	mov    0x436774,%ecx
40a008:	89 48 0c             	mov    %ecx,0xc(%eax)
40a00b:	a3 74 67 43 00       	mov    %eax,0x436774
40a010:	89 78 08             	mov    %edi,0x8(%eax)
40a013:	89 30                	mov    %esi,(%eax)
40a015:	8b 77 34             	mov    0x34(%edi),%esi
40a018:	85 f6                	test   %esi,%esi
40a01a:	0f 84 b9 00 00 00    	je     0x40a0d9
40a020:	33 ff                	xor    %edi,%edi
40a022:	39 7e 08             	cmp    %edi,0x8(%esi)
40a025:	0f 85 a1 00 00 00    	jne    0x40a0cc
40a02b:	ff 36                	push   (%esi)
40a02d:	ff 15 2c a4 44 00    	call   *0x44a42c
40a033:	59                   	pop    %ecx
40a034:	83 f8 ff             	cmp    $0xffffffff,%eax
40a037:	0f 84 78 23 01 00    	je     0x41c3b5
40a03d:	ff 36                	push   (%esi)
40a03f:	ff 15 2c a4 44 00    	call   *0x44a42c
40a045:	59                   	pop    %ecx
40a046:	83 f8 fe             	cmp    $0xfffffffe,%eax
40a049:	0f 84 66 23 01 00    	je     0x41c3b5
40a04f:	8b 0e                	mov    (%esi),%ecx
40a051:	e8 42 3d 00 00       	call   0x40dd98
40a056:	85 c0                	test   %eax,%eax
40a058:	0f 84 09 23 01 00    	je     0x41c367
40a05e:	8b 0e                	mov    (%esi),%ecx
40a060:	e8 43 01 00 00       	call   0x40a1a8
40a065:	89 46 08             	mov    %eax,0x8(%esi)
40a068:	83 f8 ff             	cmp    $0xffffffff,%eax
40a06b:	0f 84 cf 23 01 00    	je     0x41c440
40a071:	8b 0e                	mov    (%esi),%ecx
40a073:	e8 f4 00 00 00       	call   0x40a16c
40a078:	8b 4e 04             	mov    0x4(%esi),%ecx
40a07b:	66 83 39 26          	cmpw   $0x26,(%ecx)
40a07f:	74 7f                	je     0x40a100
40a081:	66 83 7e 10 3c       	cmpw   $0x3c,0x10(%esi)
40a086:	51                   	push   %ecx
40a087:	0f 84 31 23 01 00    	je     0x41c3be
40a08d:	8b 56 0c             	mov    0xc(%esi),%edx
40a090:	f7 da                	neg    %edx
40a092:	1b d2                	sbb    %edx,%edx
40a094:	81 e2 09 fe ff ff    	and    $0xfffffe09,%edx
40a09a:	81 c2 01 03 00 00    	add    $0x301,%edx
40a0a0:	e8 eb 64 00 00       	call   0x410590
40a0a5:	8b f8                	mov    %eax,%edi
40a0a7:	83 ff ff             	cmp    $0xffffffff,%edi
40a0aa:	0f 84 fa 23 01 00    	je     0x41c4aa
40a0b0:	3b 3e                	cmp    (%esi),%edi
40a0b2:	0f 85 6c 23 01 00    	jne    0x41c424
40a0b8:	83 ff ff             	cmp    $0xffffffff,%edi
40a0bb:	0f 84 e9 23 01 00    	je     0x41c4aa
40a0c1:	8b 85 dc fd ff ff    	mov    -0x224(%ebp),%eax
40a0c7:	89 78 04             	mov    %edi,0x4(%eax)
40a0ca:	33 ff                	xor    %edi,%edi
40a0cc:	8b 46 14             	mov    0x14(%esi),%eax
40a0cf:	8b f0                	mov    %eax,%esi
40a0d1:	85 c0                	test   %eax,%eax
40a0d3:	0f 85 49 ff ff ff    	jne    0x40a022
40a0d9:	33 f6                	xor    %esi,%esi
40a0db:	8b de                	mov    %esi,%ebx
40a0dd:	8b 45 e8             	mov    -0x18(%ebp),%eax
40a0e0:	89 75 e8             	mov    %esi,-0x18(%ebp)
40a0e3:	85 c0                	test   %eax,%eax
40a0e5:	74 08                	je     0x40a0ef
40a0e7:	50                   	push   %eax
40a0e8:	ff 15 e0 a3 44 00    	call   *0x44a3e0
40a0ee:	59                   	pop    %ecx
40a0ef:	8b 4d fc             	mov    -0x4(%ebp),%ecx
40a0f2:	8b c3                	mov    %ebx,%eax
40a0f4:	5f                   	pop    %edi
40a0f5:	5e                   	pop    %esi
40a0f6:	33 cd                	xor    %ebp,%ecx
40a0f8:	5b                   	pop    %ebx
40a0f9:	e8 32 ca 00 00       	call   0x416b30
40a0fe:	c9                   	leave
40a0ff:	c3                   	ret
40a100:	33 c0                	xor    %eax,%eax
40a102:	66 89 41 04          	mov    %ax,0x4(%ecx)
40a106:	8b 46 04             	mov    0x4(%esi),%eax
40a109:	8b 16                	mov    (%esi),%edx
40a10b:	0f b7 48 02          	movzwl 0x2(%eax),%ecx
40a10f:	83 e9 30             	sub    $0x30,%ecx
40a112:	e8 bf 00 00 00       	call   0x40a1d6
40a117:	83 f8 ff             	cmp    $0xffffffff,%eax
40a11a:	75 b0                	jne    0x40a0cc
40a11c:	e9 59 23 01 00       	jmp    0x41c47a
40a121:	33 f6                	xor    %esi,%esi
40a123:	eb b8                	jmp    0x40a0dd
40a125:	8b ff                	mov    %edi,%edi
40a127:	56                   	push   %esi
40a128:	57                   	push   %edi
40a129:	8b 3d 74 67 43 00    	mov    0x436774,%edi
40a12f:	8b 47 08             	mov    0x8(%edi),%eax
40a132:	8b 70 34             	mov    0x34(%eax),%esi
40a135:	85 f6                	test   %esi,%esi
40a137:	74 24                	je     0x40a15d
40a139:	8b 4e 08             	mov    0x8(%esi),%ecx
40a13c:	85 c9                	test   %ecx,%ecx
40a13e:	74 14                	je     0x40a154
40a140:	83 f9 ff             	cmp    $0xffffffff,%ecx
40a143:	74 23                	je     0x40a168
40a145:	8b 16                	mov    (%esi),%edx
40a147:	e8 8a 00 00 00       	call   0x40a1d6
40a14c:	8b 4e 08             	mov    0x8(%esi),%ecx
40a14f:	e8 18 00 00 00       	call   0x40a16c
40a154:	83 66 08 00          	andl   $0x0,0x8(%esi)
40a158:	8b 76 14             	mov    0x14(%esi),%esi
40a15b:	eb d8                	jmp    0x40a135
40a15d:	8b 47 0c             	mov    0xc(%edi),%eax
40a160:	5f                   	pop    %edi
40a161:	a3 74 67 43 00       	mov    %eax,0x436774
40a166:	5e                   	pop    %esi
40a167:	c3                   	ret
40a168:	8b 0e                	mov    (%esi),%ecx
40a16a:	eb e3                	jmp    0x40a14f
40a16c:	8b ff                	mov    %edi,%edi
40a16e:	56                   	push   %esi
40a16f:	33 f6                	xor    %esi,%esi
40a171:	83 f9 ff             	cmp    $0xffffffff,%ecx
40a174:	74 2e                	je     0x40a1a4
40a176:	8d 41 fd             	lea    -0x3(%ecx),%eax
40a179:	8b d1                	mov    %ecx,%edx
40a17b:	83 f8 5b             	cmp    $0x5b,%eax
40a17e:	77 1a                	ja     0x40a19a
40a180:	83 f9 1f             	cmp    $0x1f,%ecx
40a183:	0f 87 36 23 01 00    	ja     0x41c4bf
40a189:	8b 04 b5 ac 67 43 00 	mov    0x4367ac(,%esi,4),%eax
40a190:	0f b3 d0             	btr    %edx,%eax
40a193:	89 04 b5 ac 67 43 00 	mov    %eax,0x4367ac(,%esi,4)
40a19a:	51                   	push   %ecx
40a19b:	ff 15 84 a3 44 00    	call   *0x44a384
40a1a1:	59                   	pop    %ecx
40a1a2:	5e                   	pop    %esi
40a1a3:	c3                   	ret
40a1a4:	33 c0                	xor    %eax,%eax
40a1a6:	5e                   	pop    %esi
40a1a7:	c3                   	ret
40a1a8:	8b ff                	mov    %edi,%edi
40a1aa:	56                   	push   %esi
40a1ab:	57                   	push   %edi
40a1ac:	8b f9                	mov    %ecx,%edi
40a1ae:	57                   	push   %edi
40a1af:	ff 15 7c a3 44 00    	call   *0x44a37c
40a1b5:	8b f0                	mov    %eax,%esi
40a1b7:	59                   	pop    %ecx
40a1b8:	83 fe ff             	cmp    $0xffffffff,%esi
40a1bb:	74 0b                	je     0x40a1c8
40a1bd:	8b cf                	mov    %edi,%ecx
40a1bf:	e8 5c 00 00 00       	call   0x40a220
40a1c4:	85 c0                	test   %eax,%eax
40a1c6:	75 05                	jne    0x40a1cd
40a1c8:	5f                   	pop    %edi
40a1c9:	8b c6                	mov    %esi,%eax
40a1cb:	5e                   	pop    %esi
40a1cc:	c3                   	ret
40a1cd:	8b ce                	mov    %esi,%ecx
40a1cf:	e8 6f c2 ff ff       	call   0x406443
40a1d4:	eb f2                	jmp    0x40a1c8
40a1d6:	8b ff                	mov    %edi,%edi
40a1d8:	55                   	push   %ebp
40a1d9:	8b ec                	mov    %esp,%ebp
40a1db:	51                   	push   %ecx
40a1dc:	53                   	push   %ebx
40a1dd:	56                   	push   %esi
40a1de:	57                   	push   %edi
40a1df:	8b f2                	mov    %edx,%esi
40a1e1:	8b c1                	mov    %ecx,%eax
40a1e3:	56                   	push   %esi
40a1e4:	50                   	push   %eax
40a1e5:	89 45 fc             	mov    %eax,-0x4(%ebp)
40a1e8:	33 ff                	xor    %edi,%edi
40a1ea:	ff 15 70 a3 44 00    	call   *0x44a370
40a1f0:	8b d8                	mov    %eax,%ebx
40a1f2:	59                   	pop    %ecx
40a1f3:	59                   	pop    %ecx
40a1f4:	83 fb ff             	cmp    $0xffffffff,%ebx
40a1f7:	74 17                	je     0x40a210
40a1f9:	8b ce                	mov    %esi,%ecx
40a1fb:	83 fe 02             	cmp    $0x2,%esi
40a1fe:	0f 87 d1 22 01 00    	ja     0x41c4d5
40a204:	8b 4d fc             	mov    -0x4(%ebp),%ecx
40a207:	e8 14 00 00 00       	call   0x40a220
40a20c:	85 c0                	test   %eax,%eax
40a20e:	75 07                	jne    0x40a217
40a210:	5f                   	pop    %edi
40a211:	5e                   	pop    %esi
40a212:	8b c3                	mov    %ebx,%eax
40a214:	5b                   	pop    %ebx
40a215:	c9                   	leave
40a216:	c3                   	ret
40a217:	8b ce                	mov    %esi,%ecx
40a219:	e8 25 c2 ff ff       	call   0x406443
40a21e:	eb f0                	jmp    0x40a210
40a220:	8b ff                	mov    %edi,%edi
40a222:	56                   	push   %esi
40a223:	33 f6                	xor    %esi,%esi
40a225:	83 f9 02             	cmp    $0x2,%ecx
40a228:	7f 04                	jg     0x40a22e
40a22a:	33 c0                	xor    %eax,%eax
40a22c:	5e                   	pop    %esi
40a22d:	c3                   	ret
40a22e:	83 f9 5f             	cmp    $0x5f,%ecx
40a231:	7d f7                	jge    0x40a22a
40a233:	83 f9 1f             	cmp    $0x1f,%ecx
40a236:	0f 8f ce 22 01 00    	jg     0x41c50a
40a23c:	8b 04 b5 ac 67 43 00 	mov    0x4367ac(,%esi,4),%eax
40a243:	33 d2                	xor    %edx,%edx
40a245:	42                   	inc    %edx
40a246:	d3 e2                	shl    %cl,%edx
40a248:	23 c2                	and    %edx,%eax
40a24a:	5e                   	pop    %esi
40a24b:	c3                   	ret
40a24c:	8b ff                	mov    %edi,%edi
40a24e:	55                   	push   %ebp
40a24f:	8b ec                	mov    %esp,%ebp
40a251:	83 e4 f8             	and    $0xfffffff8,%esp
40a254:	83 ec 64             	sub    $0x64,%esp
40a257:	53                   	push   %ebx
40a258:	8b 5d 08             	mov    0x8(%ebp),%ebx
40a25b:	33 c0                	xor    %eax,%eax
40a25d:	56                   	push   %esi
40a25e:	57                   	push   %edi
40a25f:	8b f9                	mov    %ecx,%edi
40a261:	89 44 24 24          	mov    %eax,0x24(%esp)
40a265:	b9 06 40 00 00       	mov    $0x4006,%ecx
40a26a:	89 7c 24 10          	mov    %edi,0x10(%esp)
40a26e:	8b f3                	mov    %ebx,%esi
40a270:	88 44 24 0e          	mov    %al,0xe(%esp)
40a274:	e8 57 3a 00 00       	call   0x40dcd0
40a279:	89 44 24 14          	mov    %eax,0x14(%esp)
40a27d:	85 c0                	test   %eax,%eax
40a27f:	0f 84 96 22 01 00    	je     0x41c51b
40a285:	a0 55 67 43 00       	mov    0x436755,%al
40a28a:	88 44 24 0f          	mov    %al,0xf(%esp)
40a28e:	6a 2f                	push   $0x2f
40a290:	5a                   	pop    %edx
40a291:	8b ce                	mov    %esi,%ecx
40a293:	e8 97 03 00 00       	call   0x40a62f
40a298:	8b f0                	mov    %eax,%esi
40a29a:	85 f6                	test   %esi,%esi
40a29c:	0f 84 f3 25 01 00    	je     0x41c895
40a2a2:	0f b7 46 02          	movzwl 0x2(%esi),%eax
40a2a6:	50                   	push   %eax
40a2a7:	ff 15 10 a4 44 00    	call   *0x44a410
40a2ad:	59                   	pop    %ecx
40a2ae:	0f b7 c8             	movzwl %ax,%ecx
40a2b1:	66 85 c9             	test   %cx,%cx
40a2b4:	0f 84 db 25 01 00    	je     0x41c895
40a2ba:	83 f9 3f             	cmp    $0x3f,%ecx
40a2bd:	0f 84 20 25 01 00    	je     0x41c7e3
40a2c3:	83 f9 71             	cmp    $0x71,%ecx
40a2c6:	0f 84 60 22 01 00    	je     0x41c52c
40a2cc:	6a 6b                	push   $0x6b
40a2ce:	58                   	pop    %eax
40a2cf:	83 f9 63             	cmp    $0x63,%ecx
40a2d2:	74 66                	je     0x40a33a
40a2d4:	66 3b c8             	cmp    %ax,%cx
40a2d7:	0f 84 7a 24 01 00    	je     0x41c757
40a2dd:	83 f9 72             	cmp    $0x72,%ecx
40a2e0:	74 58                	je     0x40a33a
40a2e2:	83 f9 75             	cmp    $0x75,%ecx
40a2e5:	0f 84 50 22 01 00    	je     0x41c53b
40a2eb:	83 f9 61             	cmp    $0x61,%ecx
40a2ee:	0f 84 53 22 01 00    	je     0x41c547
40a2f4:	83 f9 78             	cmp    $0x78,%ecx
40a2f7:	0f 84 8e 01 00 00    	je     0x40a48b
40a2fd:	83 f9 79             	cmp    $0x79,%ecx
40a300:	0f 84 4d 22 01 00    	je     0x41c553
40a306:	83 f9 65             	cmp    $0x65,%ecx
40a309:	0f 84 50 22 01 00    	je     0x41c55f
40a30f:	83 f9 64             	cmp    $0x64,%ecx
40a312:	0f 85 d3 02 00 00    	jne    0x40a5eb
40a318:	8b 55 0c             	mov    0xc(%ebp),%edx
40a31b:	8d 46 04             	lea    0x4(%esi),%eax
40a31e:	50                   	push   %eax
40a31f:	8b c6                	mov    %esi,%eax
40a321:	8b ce                	mov    %esi,%ecx
40a323:	2b c3                	sub    %ebx,%eax
40a325:	d1 f8                	sar    $1,%eax
40a327:	2b d0                	sub    %eax,%edx
40a329:	e8 72 50 00 00       	call   0x40f3a0
40a32e:	33 c0                	xor    %eax,%eax
40a330:	89 07                	mov    %eax,(%edi)
40a332:	89 47 04             	mov    %eax,0x4(%edi)
40a335:	e9 54 ff ff ff       	jmp    0x40a28e
40a33a:	66 3b c8             	cmp    %ax,%cx
40a33d:	0f 84 14 24 01 00    	je     0x41c757
40a343:	c7 05 58 67 43 00 01 	movl   $0x1,0x436758
40a34a:	00 00 00
40a34d:	8d 5e 04             	lea    0x4(%esi),%ebx