405fe8:	c7 85 d8 dd ff ff 01 	movl   $0x1,-0x2228(%ebp)
405fef:	00 00 00
405ff2:	ff 15 d4 60 41 00    	call   *0x4160d4
405ff8:	f7 d8                	neg    %eax
405ffa:	68 60 28 40 00       	push   $0x402860
405fff:	1b f6                	sbb    %esi,%esi
406001:	46                   	inc    %esi
406002:	57                   	push   %edi
406003:	89 b5 e4 dd ff ff    	mov    %esi,-0x221c(%ebp)
406009:	ff 15 d4 60 41 00    	call   *0x4160d4
40600f:	85 c0                	test   %eax,%eax
406011:	74 08                	je     0x40601b
406013:	85 f6                	test   %esi,%esi
406015:	0f 84 a0 00 00 00    	je     0x4060bb
40601b:	8b 8d e0 dd ff ff    	mov    -0x2220(%ebp),%ecx
406021:	57                   	push   %edi
406022:	e8 6d f5 ff ff       	call   0x405594
406027:	8b f0                	mov    %eax,%esi
406029:	85 f6                	test   %esi,%esi
40602b:	0f 88 ad 05 00 00    	js     0x4065de
406031:	83 7d 10 00          	cmpl   $0x0,0x10(%ebp)
406035:	0f 84 80 00 00 00    	je     0x4060bb
40603b:	33 c0                	xor    %eax,%eax
40603d:	8b cf                	mov    %edi,%ecx
40603f:	6a 5c                	push   $0x5c
406041:	5a                   	pop    %edx
406042:	89 85 b8 dd ff ff    	mov    %eax,-0x2248(%ebp)
406048:	89 85 bc dd ff ff    	mov    %eax,-0x2244(%ebp)
40604e:	89 85 c0 dd ff ff    	mov    %eax,-0x2240(%ebp)
406054:	e8 d2 f4 ff ff       	call   0x40552b
406059:	85 c0                	test   %eax,%eax
40605b:	0f 85 78 05 00 00    	jne    0x4065d9
406061:	57                   	push   %edi
406062:	e8 1b fb ff ff       	call   0x405b82
406067:	85 c0                	test   %eax,%eax
406069:	74 20                	je     0x40608b
40606b:	8b 85 dc dd ff ff    	mov    -0x2224(%ebp),%eax
406071:	8d 8d b8 dd ff ff    	lea    -0x2248(%ebp),%ecx
406077:	57                   	push   %edi
406078:	89 85 b8 dd ff ff    	mov    %eax,-0x2248(%ebp)
40607e:	e8 a4 ed ff ff       	call   0x404e27
406083:	33 c0                	xor    %eax,%eax
406085:	89 85 b8 dd ff ff    	mov    %eax,-0x2248(%ebp)
40608b:	83 bd e4 dd ff ff 00 	cmpl   $0x0,-0x221c(%ebp)
406092:	74 27                	je     0x4060bb
406094:	8b 8d e0 dd ff ff    	mov    -0x2220(%ebp),%ecx
40609a:	57                   	push   %edi
40609b:	e8 f4 f4 ff ff       	call   0x405594
4060a0:	8b f0                	mov    %eax,%esi
4060a2:	85 f6                	test   %esi,%esi
4060a4:	0f 88 34 05 00 00    	js     0x4065de
4060aa:	8b 8d e0 dd ff ff    	mov    -0x2220(%ebp),%ecx
4060b0:	57                   	push   %edi
4060b1:	e8 34 fb ff ff       	call   0x405bea
4060b6:	e9 81 02 00 00       	jmp    0x40633c
4060bb:	68 78 28 40 00       	push   $0x402878
4060c0:	57                   	push   %edi
4060c1:	ff 15 d4 60 41 00    	call   *0x4160d4
4060c7:	85 c0                	test   %eax,%eax
4060c9:	75 1c                	jne    0x4060e7
4060cb:	8b 8d e0 dd ff ff    	mov    -0x2220(%ebp),%ecx
4060d1:	57                   	push   %edi
4060d2:	89 85 d8 dd ff ff    	mov    %eax,-0x2228(%ebp)
4060d8:	e8 b7 f4 ff ff       	call   0x405594
4060dd:	8b f0                	mov    %eax,%esi
4060df:	85 f6                	test   %esi,%esi
4060e1:	0f 88 f7 04 00 00    	js     0x4065de
4060e7:	68 58 28 40 00       	push   $0x402858
4060ec:	57                   	push   %edi
4060ed:	ff 15 d4 60 41 00    	call   *0x4160d4
4060f3:	85 c0                	test   %eax,%eax
4060f5:	0f 85 1c 01 00 00    	jne    0x406217
4060fb:	8b 8d e0 dd ff ff    	mov    -0x2220(%ebp),%ecx
406101:	8d 85 e8 dd ff ff    	lea    -0x2218(%ebp),%eax
406107:	50                   	push   %eax
406108:	e8 87 f4 ff ff       	call   0x405594
40610d:	8b f0                	mov    %eax,%esi
40610f:	85 f6                	test   %esi,%esi
406111:	0f 88 c7 04 00 00    	js     0x4065de
406117:	8b 8d e0 dd ff ff    	mov    -0x2220(%ebp),%ecx
40611d:	57                   	push   %edi
40611e:	e8 71 f4 ff ff       	call   0x405594
406123:	8b f0                	mov    %eax,%esi
406125:	85 f6                	test   %esi,%esi
406127:	0f 88 b1 04 00 00    	js     0x4065de
40612d:	6a 3d                	push   $0x3d
40612f:	58                   	pop    %eax
406130:	66 39 07             	cmp    %ax,(%edi)
406133:	0f 85 a0 04 00 00    	jne    0x4065d9
406139:	83 7d 10 00          	cmpl   $0x0,0x10(%ebp)
40613d:	74 52                	je     0x406191
40613f:	33 c0                	xor    %eax,%eax
406141:	89 85 b0 dd ff ff    	mov    %eax,-0x2250(%ebp)
406147:	89 85 b4 dd ff ff    	mov    %eax,-0x224c(%ebp)
40614d:	8b 85 dc dd ff ff    	mov    -0x2224(%ebp),%eax
406153:	8b 8d e0 dd ff ff    	mov    -0x2220(%ebp),%ecx
406159:	c6 45 fc 01          	movb   $0x1,-0x4(%ebp)
40615d:	89 85 ac dd ff ff    	mov    %eax,-0x2254(%ebp)
406163:	8d 85 e8 dd ff ff    	lea    -0x2218(%ebp),%eax
406169:	57                   	push   %edi
40616a:	50                   	push   %eax
40616b:	8d 85 ac dd ff ff    	lea    -0x2254(%ebp),%eax
406171:	50                   	push   %eax
406172:	e8 77 f5 ff ff       	call   0x4056ee
406177:	8b f0                	mov    %eax,%esi
406179:	33 c0                	xor    %eax,%eax
40617b:	89 85 ac dd ff ff    	mov    %eax,-0x2254(%ebp)
406181:	85 f6                	test   %esi,%esi
406183:	0f 88 55 04 00 00    	js     0x4065de
406189:	88 45 fc             	mov    %al,-0x4(%ebp)
40618c:	e9 b5 01 00 00       	jmp    0x406346
406191:	83 7d 14 00          	cmpl   $0x0,0x14(%ebp)
406195:	75 65                	jne    0x4061fc
406197:	83 bd d8 dd ff ff 00 	cmpl   $0x0,-0x2228(%ebp)
40619e:	74 5c                	je     0x4061fc
4061a0:	8d 85 e4 dd ff ff    	lea    -0x221c(%ebp),%eax
4061a6:	33 c9                	xor    %ecx,%ecx
4061a8:	50                   	push   %eax
4061a9:	68 06 00 02 00       	push   $0x20006
4061ae:	51                   	push   %ecx
4061af:	51                   	push   %ecx
4061b0:	ff b5 dc dd ff ff    	push   -0x2224(%ebp)
4061b6:	89 8d e4 dd ff ff    	mov    %ecx,-0x221c(%ebp)
4061bc:	ff 15 04 60 41 00    	call   *0x416004
4061c2:	85 c0                	test   %eax,%eax
4061c4:	0f 85 04 04 00 00    	jne    0x4065ce
4061ca:	8b b5 e4 dd ff ff    	mov    -0x221c(%ebp),%esi
4061d0:	8d 85 e8 dd ff ff    	lea    -0x2218(%ebp),%eax
4061d6:	50                   	push   %eax
4061d7:	56                   	push   %esi
4061d8:	89 b5 d8 dd ff ff    	mov    %esi,-0x2228(%ebp)
4061de:	ff 15 00 60 41 00    	call   *0x416000
4061e4:	85 c0                	test   %eax,%eax
4061e6:	74 09                	je     0x4061f1
4061e8:	83 f8 02             	cmp    $0x2,%eax
4061eb:	0f 85 c1 03 00 00    	jne    0x4065b2
4061f1:	85 f6                	test   %esi,%esi
4061f3:	74 07                	je     0x4061fc
4061f5:	56                   	push   %esi
4061f6:	ff 15 18 60 41 00    	call   *0x416018
4061fc:	8b 8d e0 dd ff ff    	mov    -0x2220(%ebp),%ecx
406202:	57                   	push   %edi
406203:	e8 e2 f9 ff ff       	call   0x405bea
406208:	8b f0                	mov    %eax,%esi
40620a:	85 f6                	test   %esi,%esi
40620c:	0f 88 cc 03 00 00    	js     0x4065de
406212:	e9 8d 03 00 00       	jmp    0x4065a4
406217:	6a 5c                	push   $0x5c
406219:	5a                   	pop    %edx
40621a:	8b cf                	mov    %edi,%ecx
40621c:	e8 0a f3 ff ff       	call   0x40552b
406221:	85 c0                	test   %eax,%eax
406223:	0f 85 b0 03 00 00    	jne    0x4065d9
406229:	39 45 10             	cmp    %eax,0x10(%ebp)
40622c:	0f 84 6f 01 00 00    	je     0x4063a1
406232:	8b b5 dc dd ff ff    	mov    -0x2224(%ebp),%esi
406238:	8d 85 e4 dd ff ff    	lea    -0x221c(%ebp),%eax
40623e:	50                   	push   %eax
40623f:	68 1f 00 02 00       	push   $0x2001f
406244:	33 c9                	xor    %ecx,%ecx
406246:	51                   	push   %ecx
406247:	57                   	push   %edi
406248:	56                   	push   %esi
406249:	89 8d e4 dd ff ff    	mov    %ecx,-0x221c(%ebp)
40624f:	ff 15 04 60 41 00    	call   *0x416004
406255:	85 c0                	test   %eax,%eax
406257:	75 1f                	jne    0x406278
406259:	85 db                	test   %ebx,%ebx
40625b:	74 07                	je     0x406264
40625d:	53                   	push   %ebx
40625e:	ff 15 18 60 41 00    	call   *0x416018
406264:	8b 9d e4 dd ff ff    	mov    -0x221c(%ebp),%ebx
40626a:	89 9d c8 dd ff ff    	mov    %ebx,-0x2238(%ebp)
406270:	85 c0                	test   %eax,%eax
406272:	0f 84 8a 00 00 00    	je     0x406302
406278:	8d 85 e4 dd ff ff    	lea    -0x221c(%ebp),%eax
40627e:	33 c9                	xor    %ecx,%ecx
406280:	50                   	push   %eax
406281:	68 19 00 02 00       	push   $0x20019
406286:	51                   	push   %ecx
406287:	57                   	push   %edi
406288:	56                   	push   %esi
406289:	89 8d e4 dd ff ff    	mov    %ecx,-0x221c(%ebp)
40628f:	ff 15 04 60 41 00    	call   *0x416004
406295:	85 c0                	test   %eax,%eax
406297:	75 1b                	jne    0x4062b4
406299:	85 db                	test   %ebx,%ebx
40629b:	74 07                	je     0x4062a4
40629d:	53                   	push   %ebx
40629e:	ff 15 18 60 41 00    	call   *0x416018
4062a4:	8b 9d e4 dd ff ff    	mov    -0x221c(%ebp),%ebx
4062aa:	89 9d c8 dd ff ff    	mov    %ebx,-0x2238(%ebp)
4062b0:	85 c0                	test   %eax,%eax
4062b2:	74 4e                	je     0x406302
4062b4:	8d 85 9c dd ff ff    	lea    -0x2264(%ebp),%eax
4062ba:	33 c9                	xor    %ecx,%ecx
4062bc:	50                   	push   %eax
4062bd:	8d 85 e4 dd ff ff    	lea    -0x221c(%ebp),%eax
4062c3:	89 8d e4 dd ff ff    	mov    %ecx,-0x221c(%ebp)
4062c9:	50                   	push   %eax
4062ca:	51                   	push   %ecx
4062cb:	68 1f 00 02 00       	push   $0x2001f
4062d0:	51                   	push   %ecx
4062d1:	51                   	push   %ecx
4062d2:	51                   	push   %ecx
4062d3:	57                   	push   %edi
4062d4:	56                   	push   %esi
4062d5:	ff 15 10 60 41 00    	call   *0x416010
4062db:	85 c0                	test   %eax,%eax
4062dd:	0f 85 eb 02 00 00    	jne    0x4065ce
4062e3:	85 db                	test   %ebx,%ebx
4062e5:	74 07                	je     0x4062ee
4062e7:	53                   	push   %ebx
4062e8:	ff 15 18 60 41 00    	call   *0x416018
4062ee:	8b 9d e4 dd ff ff    	mov    -0x221c(%ebp),%ebx
4062f4:	89 9d c8 dd ff ff    	mov    %ebx,-0x2238(%ebp)
4062fa:	85 c0                	test   %eax,%eax
4062fc:	0f 85 cc 02 00 00    	jne    0x4065ce
406302:	8b 8d e0 dd ff ff    	mov    -0x2220(%ebp),%ecx
406308:	57                   	push   %edi
406309:	e8 86 f2 ff ff       	call   0x405594
40630e:	8b f0                	mov    %eax,%esi
406310:	85 f6                	test   %esi,%esi
406312:	0f 88 c6 02 00 00    	js     0x4065de
406318:	6a 3d                	push   $0x3d
40631a:	58                   	pop    %eax
40631b:	66 39 07             	cmp    %ax,(%edi)
40631e:	75 26                	jne    0x406346
406320:	8b 8d e0 dd ff ff    	mov    -0x2220(%ebp),%ecx
406326:	33 c0                	xor    %eax,%eax
406328:	57                   	push   %edi
406329:	50                   	push   %eax
40632a:	8d 85 c8 dd ff ff    	lea    -0x2238(%ebp),%eax
406330:	50                   	push   %eax
406331:	e8 b8 f3 ff ff       	call   0x4056ee
406336:	8b 9d c8 dd ff ff    	mov    -0x2238(%ebp),%ebx
40633c:	8b f0                	mov    %eax,%esi
40633e:	85 f6                	test   %esi,%esi
406340:	0f 88 98 02 00 00    	js     0x4065de
406346:	6a 7b                	push   $0x7b
406348:	58                   	pop    %eax
406349:	66 39 07             	cmp    %ax,(%edi)
40634c:	0f 85 52 02 00 00    	jne    0x4065a4
406352:	8b cf                	mov    %edi,%ecx
406354:	8d 51 02             	lea    0x2(%ecx),%edx
406357:	66 8b 01             	mov    (%ecx),%ax
40635a:	83 c1 02             	add    $0x2,%ecx
40635d:	66 3b 85 c4 dd ff ff 	cmp    -0x223c(%ebp),%ax
406364:	75 f1                	jne    0x406357
406366:	2b ca                	sub    %edx,%ecx
406368:	d1 f9                	sar    $1,%ecx
40636a:	83 f9 01             	cmp    $0x1,%ecx
40636d:	0f 85 31 02 00 00    	jne    0x4065a4
406373:	8b 8d e0 dd ff ff    	mov    -0x2220(%ebp),%ecx
406379:	33 c0                	xor    %eax,%eax
40637b:	50                   	push   %eax
40637c:	ff 75 10             	push   0x10(%ebp)
40637f:	53                   	push   %ebx
406380:	57                   	push   %edi
406381:	e8 de fb ff ff       	call   0x405f64
406386:	8b f0                	mov    %eax,%esi
406388:	85 f6                	test   %esi,%esi
40638a:	0f 88 4e 02 00 00    	js     0x4065de
406390:	8b 8d e0 dd ff ff    	mov    -0x2220(%ebp),%ecx
406396:	57                   	push   %edi
406397:	e8 f8 f1 ff ff       	call   0x405594
40639c:	e9 67 fe ff ff       	jmp    0x406208
4063a1:	8b 75 14             	mov    0x14(%ebp),%esi
4063a4:	85 f6                	test   %esi,%esi
4063a6:	75 51                	jne    0x4063f9
4063a8:	8d 85 e4 dd ff ff    	lea    -0x221c(%ebp),%eax
4063ae:	33 c9                	xor    %ecx,%ecx
4063b0:	50                   	push   %eax
4063b1:	68 19 00 02 00       	push   $0x20019
4063b6:	51                   	push   %ecx
4063b7:	57                   	push   %edi
4063b8:	ff b5 dc dd ff ff    	push   -0x2224(%ebp)
4063be:	89 8d e4 dd ff ff    	mov    %ecx,-0x221c(%ebp)
4063c4:	ff 15 04 60 41 00    	call   *0x416004
4063ca:	89 85 d4 dd ff ff    	mov    %eax,-0x222c(%ebp)
4063d0:	85 c0                	test   %eax,%eax
4063d2:	75 2e                	jne    0x406402
4063d4:	89 85 d4 dd ff ff    	mov    %eax,-0x222c(%ebp)
4063da:	85 db                	test   %ebx,%ebx
4063dc:	74 0d                	je     0x4063eb
4063de:	53                   	push   %ebx
4063df:	ff 15 18 60 41 00    	call   *0x416018
4063e5:	89 85 d4 dd ff ff    	mov    %eax,-0x222c(%ebp)
4063eb:	8b 9d e4 dd ff ff    	mov    -0x221c(%ebp),%ebx
4063f1:	89 9d c8 dd ff ff    	mov    %ebx,-0x2238(%ebp)
4063f7:	eb 09                	jmp    0x406402
4063f9:	6a 02                	push   $0x2
4063fb:	58                   	pop    %eax
4063fc:	89 85 d4 dd ff ff    	mov    %eax,-0x222c(%ebp)
406402:	89 b5 e4 dd ff ff    	mov    %esi,-0x221c(%ebp)
406408:	85 c0                	test   %eax,%eax
40640a:	74 0a                	je     0x406416
40640c:	c7 85 e4 dd ff ff 01 	movl   $0x1,-0x221c(%ebp)
406413:	00 00 00
406416:	6a ff                	push   $0xffffffff
406418:	57                   	push   %edi
406419:	8d 85 e8 fd ff ff    	lea    -0x218(%ebp),%eax
40641f:	68 04 01 00 00       	push   $0x104
406424:	50                   	push   %eax
406425:	ff 15 b4 62 41 00    	call   *0x4162b4
40642b:	83 c4 10             	add    $0x10,%esp
40642e:	8b c8                	mov    %eax,%ecx
406430:	e8 d7 e7 ff ff       	call   0x404c0c
406435:	8b 8d e0 dd ff ff    	mov    -0x2220(%ebp),%ecx
40643b:	57                   	push   %edi
40643c:	e8 53 f1 ff ff       	call   0x405594
406441:	8b f0                	mov    %eax,%esi
406443:	85 f6                	test   %esi,%esi
406445:	0f 88 93 01 00 00    	js     0x4065de
40644b:	8b 8d e0 dd ff ff    	mov    -0x2220(%ebp),%ecx
406451:	57                   	push   %edi
406452:	e8 93 f7 ff ff       	call   0x405bea
406457:	8b f0                	mov    %eax,%esi
406459:	85 f6                	test   %esi,%esi
40645b:	0f 88 7d 01 00 00    	js     0x4065de
406461:	6a 7b                	push   $0x7b
406463:	58                   	pop    %eax
406464:	66 39 07             	cmp    %ax,(%edi)
406467:	75 5c                	jne    0x4064c5
406469:	8b cf                	mov    %edi,%ecx
40646b:	8d 51 02             	lea    0x2(%ecx),%edx
40646e:	66 8b 01             	mov    (%ecx),%ax
406471:	83 c1 02             	add    $0x2,%ecx
406474:	66 3b 85 c4 dd ff ff 	cmp    -0x223c(%ebp),%ax
40647b:	75 f1                	jne    0x40646e
40647d:	2b ca                	sub    %edx,%ecx
40647f:	d1 f9                	sar    $1,%ecx
406481:	83 f9 01             	cmp    $0x1,%ecx
406484:	75 3f                	jne    0x4064c5
406486:	ff b5 e4 dd ff ff    	push   -0x221c(%ebp)
40648c:	8b 8d e0 dd ff ff    	mov    -0x2220(%ebp),%ecx
406492:	33 c0                	xor    %eax,%eax
406494:	50                   	push   %eax
406495:	53                   	push   %ebx
406496:	57                   	push   %edi
406497:	e8 c8 fa ff ff       	call   0x405f64
40649c:	8b f0                	mov    %eax,%esi
40649e:	85 f6                	test   %esi,%esi
4064a0:	79 0d                	jns    0x4064af
4064a2:	83 bd e4 dd ff ff 00 	cmpl   $0x0,-0x221c(%ebp)
4064a9:	0f 84 2f 01 00 00    	je     0x4065de
4064af:	8b 8d e0 dd ff ff    	mov    -0x2220(%ebp),%ecx
4064b5:	57                   	push   %edi
4064b6:	e8 d9 f0 ff ff       	call   0x405594
4064bb:	8b f0                	mov    %eax,%esi