407188:	89 85 ac dd ff ff    	mov    %eax,-0x2254(%ebp)
40718e:	8d 85 e8 dd ff ff    	lea    -0x2218(%ebp),%eax
407194:	57                   	push   %edi
407195:	50                   	push   %eax
407196:	8d 85 ac dd ff ff    	lea    -0x2254(%ebp),%eax
40719c:	50                   	push   %eax
40719d:	e8 06 f5 ff ff       	call   0x4066a8
4071a2:	8b f0                	mov    %eax,%esi
4071a4:	33 c0                	xor    %eax,%eax
4071a6:	89 85 ac dd ff ff    	mov    %eax,-0x2254(%ebp)
4071ac:	85 f6                	test   %esi,%esi
4071ae:	0f 88 55 04 00 00    	js     0x407609
4071b4:	88 45 fc             	mov    %al,-0x4(%ebp)
4071b7:	e9 b5 01 00 00       	jmp    0x407371
4071bc:	83 7d 14 00          	cmpl   $0x0,0x14(%ebp)
4071c0:	75 65                	jne    0x407227
4071c2:	83 bd d8 dd ff ff 00 	cmpl   $0x0,-0x2228(%ebp)
4071c9:	74 5c                	je     0x407227
4071cb:	8d 85 e4 dd ff ff    	lea    -0x221c(%ebp),%eax
4071d1:	33 c9                	xor    %ecx,%ecx
4071d3:	50                   	push   %eax
4071d4:	68 06 00 02 00       	push   $0x20006
4071d9:	51                   	push   %ecx
4071da:	51                   	push   %ecx
4071db:	ff b5 dc dd ff ff    	push   -0x2224(%ebp)
4071e1:	89 8d e4 dd ff ff    	mov    %ecx,-0x221c(%ebp)
4071e7:	ff 15 0c f0 40 00    	call   *0x40f00c
4071ed:	85 c0                	test   %eax,%eax
4071ef:	0f 85 04 04 00 00    	jne    0x4075f9
4071f5:	8b b5 e4 dd ff ff    	mov    -0x221c(%ebp),%esi
4071fb:	8d 85 e8 dd ff ff    	lea    -0x2218(%ebp),%eax
407201:	50                   	push   %eax
407202:	56                   	push   %esi
407203:	89 b5 d8 dd ff ff    	mov    %esi,-0x2228(%ebp)
407209:	ff 15 18 f0 40 00    	call   *0x40f018
40720f:	85 c0                	test   %eax,%eax
407211:	74 09                	je     0x40721c
407213:	83 f8 02             	cmp    $0x2,%eax
407216:	0f 85 c1 03 00 00    	jne    0x4075dd
40721c:	85 f6                	test   %esi,%esi
40721e:	74 07                	je     0x407227
407220:	56                   	push   %esi
407221:	ff 15 00 f0 40 00    	call   *0x40f000
407227:	8b 8d e0 dd ff ff    	mov    -0x2220(%ebp),%ecx
40722d:	57                   	push   %edi
40722e:	e8 69 f9 ff ff       	call   0x406b9c
407233:	8b f0                	mov    %eax,%esi
407235:	85 f6                	test   %esi,%esi
407237:	0f 88 cc 03 00 00    	js     0x407609
40723d:	e9 8d 03 00 00       	jmp    0x4075cf
407242:	6a 5c                	push   $0x5c
407244:	5a                   	pop    %edx
407245:	8b cf                	mov    %edi,%ecx
407247:	e8 9f f3 ff ff       	call   0x4065eb
40724c:	85 c0                	test   %eax,%eax
40724e:	0f 85 b0 03 00 00    	jne    0x407604
407254:	39 45 10             	cmp    %eax,0x10(%ebp)
407257:	0f 84 6f 01 00 00    	je     0x4073cc
40725d:	8b b5 dc dd ff ff    	mov    -0x2224(%ebp),%esi
407263:	8d 85 e4 dd ff ff    	lea    -0x221c(%ebp),%eax
407269:	50                   	push   %eax
40726a:	68 1f 00 02 00       	push   $0x2001f
40726f:	33 c9                	xor    %ecx,%ecx
407271:	51                   	push   %ecx
407272:	57                   	push   %edi
407273:	56                   	push   %esi
407274:	89 8d e4 dd ff ff    	mov    %ecx,-0x221c(%ebp)
40727a:	ff 15 0c f0 40 00    	call   *0x40f00c
407280:	85 c0                	test   %eax,%eax
407282:	75 1f                	jne    0x4072a3
407284:	85 db                	test   %ebx,%ebx
407286:	74 07                	je     0x40728f
407288:	53                   	push   %ebx
407289:	ff 15 00 f0 40 00    	call   *0x40f000
40728f:	8b 9d e4 dd ff ff    	mov    -0x221c(%ebp),%ebx
407295:	89 9d c8 dd ff ff    	mov    %ebx,-0x2238(%ebp)
40729b:	85 c0                	test   %eax,%eax
40729d:	0f 84 8a 00 00 00    	je     0x40732d
4072a3:	8d 85 e4 dd ff ff    	lea    -0x221c(%ebp),%eax
4072a9:	33 c9                	xor    %ecx,%ecx
4072ab:	50                   	push   %eax
4072ac:	68 19 00 02 00       	push   $0x20019
4072b1:	51                   	push   %ecx
4072b2:	57                   	push   %edi
4072b3:	56                   	push   %esi
4072b4:	89 8d e4 dd ff ff    	mov    %ecx,-0x221c(%ebp)
4072ba:	ff 15 0c f0 40 00    	call   *0x40f00c
4072c0:	85 c0                	test   %eax,%eax
4072c2:	75 1b                	jne    0x4072df
4072c4:	85 db                	test   %ebx,%ebx
4072c6:	74 07                	je     0x4072cf
4072c8:	53                   	push   %ebx
4072c9:	ff 15 00 f0 40 00    	call   *0x40f000
4072cf:	8b 9d e4 dd ff ff    	mov    -0x221c(%ebp),%ebx
4072d5:	89 9d c8 dd ff ff    	mov    %ebx,-0x2238(%ebp)
4072db:	85 c0                	test   %eax,%eax
4072dd:	74 4e                	je     0x40732d
4072df:	8d 85 9c dd ff ff    	lea    -0x2264(%ebp),%eax
4072e5:	33 c9                	xor    %ecx,%ecx
4072e7:	50                   	push   %eax
4072e8:	8d 85 e4 dd ff ff    	lea    -0x221c(%ebp),%eax
4072ee:	89 8d e4 dd ff ff    	mov    %ecx,-0x221c(%ebp)
4072f4:	50                   	push   %eax
4072f5:	51                   	push   %ecx
4072f6:	68 1f 00 02 00       	push   $0x2001f
4072fb:	51                   	push   %ecx
4072fc:	51                   	push   %ecx
4072fd:	51                   	push   %ecx
4072fe:	57                   	push   %edi
4072ff:	56                   	push   %esi
407300:	ff 15 14 f0 40 00    	call   *0x40f014
407306:	85 c0                	test   %eax,%eax
407308:	0f 85 eb 02 00 00    	jne    0x4075f9
40730e:	85 db                	test   %ebx,%ebx
407310:	74 07                	je     0x407319
407312:	53                   	push   %ebx
407313:	ff 15 00 f0 40 00    	call   *0x40f000
407319:	8b 9d e4 dd ff ff    	mov    -0x221c(%ebp),%ebx
40731f:	89 9d c8 dd ff ff    	mov    %ebx,-0x2238(%ebp)
407325:	85 c0                	test   %eax,%eax
407327:	0f 85 cc 02 00 00    	jne    0x4075f9
40732d:	8b 8d e0 dd ff ff    	mov    -0x2220(%ebp),%ecx
407333:	57                   	push   %edi
407334:	e8 fc fa ff ff       	call   0x406e35
407339:	8b f0                	mov    %eax,%esi
40733b:	85 f6                	test   %esi,%esi
40733d:	0f 88 c6 02 00 00    	js     0x407609
407343:	6a 3d                	push   $0x3d
407345:	58                   	pop    %eax
407346:	66 39 07             	cmp    %ax,(%edi)
407349:	75 26                	jne    0x407371
40734b:	8b 8d e0 dd ff ff    	mov    -0x2220(%ebp),%ecx
407351:	33 c0                	xor    %eax,%eax
407353:	57                   	push   %edi
407354:	50                   	push   %eax
407355:	8d 85 c8 dd ff ff    	lea    -0x2238(%ebp),%eax
40735b:	50                   	push   %eax
40735c:	e8 47 f3 ff ff       	call   0x4066a8
407361:	8b 9d c8 dd ff ff    	mov    -0x2238(%ebp),%ebx
407367:	8b f0                	mov    %eax,%esi
407369:	85 f6                	test   %esi,%esi
40736b:	0f 88 98 02 00 00    	js     0x407609
407371:	6a 7b                	push   $0x7b
407373:	58                   	pop    %eax
407374:	66 39 07             	cmp    %ax,(%edi)
407377:	0f 85 52 02 00 00    	jne    0x4075cf
40737d:	8b cf                	mov    %edi,%ecx
40737f:	8d 51 02             	lea    0x2(%ecx),%edx
407382:	66 8b 01             	mov    (%ecx),%ax
407385:	83 c1 02             	add    $0x2,%ecx
407388:	66 3b 85 c4 dd ff ff 	cmp    -0x223c(%ebp),%ax
40738f:	75 f1                	jne    0x407382
407391:	2b ca                	sub    %edx,%ecx
407393:	d1 f9                	sar    $1,%ecx
407395:	83 f9 01             	cmp    $0x1,%ecx
407398:	0f 85 31 02 00 00    	jne    0x4075cf
40739e:	8b 8d e0 dd ff ff    	mov    -0x2220(%ebp),%ecx
4073a4:	33 c0                	xor    %eax,%eax
4073a6:	50                   	push   %eax
4073a7:	ff 75 10             	push   0x10(%ebp)
4073aa:	53                   	push   %ebx
4073ab:	57                   	push   %edi
4073ac:	e8 de fb ff ff       	call   0x406f8f
4073b1:	8b f0                	mov    %eax,%esi
4073b3:	85 f6                	test   %esi,%esi
4073b5:	0f 88 4e 02 00 00    	js     0x407609
4073bb:	8b 8d e0 dd ff ff    	mov    -0x2220(%ebp),%ecx
4073c1:	57                   	push   %edi
4073c2:	e8 6e fa ff ff       	call   0x406e35
4073c7:	e9 67 fe ff ff       	jmp    0x407233
4073cc:	8b 75 14             	mov    0x14(%ebp),%esi
4073cf:	85 f6                	test   %esi,%esi
4073d1:	75 51                	jne    0x407424
4073d3:	8d 85 e4 dd ff ff    	lea    -0x221c(%ebp),%eax
4073d9:	33 c9                	xor    %ecx,%ecx
4073db:	50                   	push   %eax
4073dc:	68 19 00 02 00       	push   $0x20019
4073e1:	51                   	push   %ecx
4073e2:	57                   	push   %edi
4073e3:	ff b5 dc dd ff ff    	push   -0x2224(%ebp)
4073e9:	89 8d e4 dd ff ff    	mov    %ecx,-0x221c(%ebp)
4073ef:	ff 15 0c f0 40 00    	call   *0x40f00c
4073f5:	89 85 d4 dd ff ff    	mov    %eax,-0x222c(%ebp)
4073fb:	85 c0                	test   %eax,%eax
4073fd:	75 2e                	jne    0x40742d
4073ff:	89 85 d4 dd ff ff    	mov    %eax,-0x222c(%ebp)
407405:	85 db                	test   %ebx,%ebx
407407:	74 0d                	je     0x407416
407409:	53                   	push   %ebx
40740a:	ff 15 00 f0 40 00    	call   *0x40f000
407410:	89 85 d4 dd ff ff    	mov    %eax,-0x222c(%ebp)
407416:	8b 9d e4 dd ff ff    	mov    -0x221c(%ebp),%ebx
40741c:	89 9d c8 dd ff ff    	mov    %ebx,-0x2238(%ebp)
407422:	eb 09                	jmp    0x40742d
407424:	6a 02                	push   $0x2
407426:	58                   	pop    %eax
407427:	89 85 d4 dd ff ff    	mov    %eax,-0x222c(%ebp)
40742d:	89 b5 e4 dd ff ff    	mov    %esi,-0x221c(%ebp)
407433:	85 c0                	test   %eax,%eax
407435:	74 0a                	je     0x407441
407437:	c7 85 e4 dd ff ff 01 	movl   $0x1,-0x221c(%ebp)
40743e:	00 00 00
407441:	6a ff                	push   $0xffffffff
407443:	57                   	push   %edi
407444:	8d 85 e8 fd ff ff    	lea    -0x218(%ebp),%eax
40744a:	68 04 01 00 00       	push   $0x104
40744f:	50                   	push   %eax
407450:	ff 15 f8 f1 40 00    	call   *0x40f1f8
407456:	83 c4 10             	add    $0x10,%esp
407459:	8b c8                	mov    %eax,%ecx
40745b:	e8 09 f7 ff ff       	call   0x406b69
407460:	8b 8d e0 dd ff ff    	mov    -0x2220(%ebp),%ecx
407466:	57                   	push   %edi
407467:	e8 c9 f9 ff ff       	call   0x406e35
40746c:	8b f0                	mov    %eax,%esi
40746e:	85 f6                	test   %esi,%esi
407470:	0f 88 93 01 00 00    	js     0x407609
407476:	8b 8d e0 dd ff ff    	mov    -0x2220(%ebp),%ecx
40747c:	57                   	push   %edi
40747d:	e8 1a f7 ff ff       	call   0x406b9c
407482:	8b f0                	mov    %eax,%esi
407484:	85 f6                	test   %esi,%esi
407486:	0f 88 7d 01 00 00    	js     0x407609
40748c:	6a 7b                	push   $0x7b
40748e:	58                   	pop    %eax
40748f:	66 39 07             	cmp    %ax,(%edi)
407492:	75 5c                	jne    0x4074f0
407494:	8b cf                	mov    %edi,%ecx
407496:	8d 51 02             	lea    0x2(%ecx),%edx
407499:	66 8b 01             	mov    (%ecx),%ax
40749c:	83 c1 02             	add    $0x2,%ecx
40749f:	66 3b 85 c4 dd ff ff 	cmp    -0x223c(%ebp),%ax
4074a6:	75 f1                	jne    0x407499
4074a8:	2b ca                	sub    %edx,%ecx
4074aa:	d1 f9                	sar    $1,%ecx
4074ac:	83 f9 01             	cmp    $0x1,%ecx
4074af:	75 3f                	jne    0x4074f0
4074b1:	ff b5 e4 dd ff ff    	push   -0x221c(%ebp)
4074b7:	8b 8d e0 dd ff ff    	mov    -0x2220(%ebp),%ecx
4074bd:	33 c0                	xor    %eax,%eax
4074bf:	50                   	push   %eax
4074c0:	53                   	push   %ebx
4074c1:	57                   	push   %edi
4074c2:	e8 c8 fa ff ff       	call   0x406f8f
4074c7:	8b f0                	mov    %eax,%esi
4074c9:	85 f6                	test   %esi,%esi
4074cb:	79 0d                	jns    0x4074da
4074cd:	83 bd e4 dd ff ff 00 	cmpl   $0x0,-0x221c(%ebp)
4074d4:	0f 84 2f 01 00 00    	je     0x407609
4074da:	8b 8d e0 dd ff ff    	mov    -0x2220(%ebp),%ecx
4074e0:	57                   	push   %edi
4074e1:	e8 4f f9 ff ff       	call   0x406e35
4074e6:	8b f0                	mov    %eax,%esi
4074e8:	85 f6                	test   %esi,%esi
4074ea:	0f 88 19 01 00 00    	js     0x407609
4074f0:	8b 8d d4 dd ff ff    	mov    -0x222c(%ebp),%ecx
4074f6:	83 f9 02             	cmp    $0x2,%ecx
4074f9:	0f 84 d0 00 00 00    	je     0x4075cf
4074ff:	85 c9                	test   %ecx,%ecx
407501:	74 0f                	je     0x407512
407503:	83 7d 14 00          	cmpl   $0x0,0x14(%ebp)
407507:	0f 84 ee 00 00 00    	je     0x4075fb
40750d:	e9 bd 00 00 00       	jmp    0x4075cf
407512:	83 7d 14 00          	cmpl   $0x0,0x14(%ebp)
407516:	74 45                	je     0x40755d
407518:	53                   	push   %ebx
407519:	e8 24 f8 ff ff       	call   0x406d42
40751e:	85 c0                	test   %eax,%eax
407520:	74 3b                	je     0x40755d
407522:	8d 85 e8 fd ff ff    	lea    -0x218(%ebp),%eax
407528:	50                   	push   %eax
407529:	e8 d5 f6 ff ff       	call   0x406c03
40752e:	85 c0                	test   %eax,%eax
407530:	0f 84 99 00 00 00    	je     0x4075cf
407536:	83 bd d8 dd ff ff 00 	cmpl   $0x0,-0x2228(%ebp)
40753d:	0f 84 8c 00 00 00    	je     0x4075cf
407543:	8d 85 e8 fd ff ff    	lea    -0x218(%ebp),%eax
407549:	50                   	push   %eax
40754a:	8d 8d c8 dd ff ff    	lea    -0x2238(%ebp),%ecx
407550:	e8 df f6 ff ff       	call   0x406c34
407555:	8b 9d c8 dd ff ff    	mov    -0x2238(%ebp),%ebx
40755b:	eb 72                	jmp    0x4075cf
40755d:	53                   	push   %ebx
40755e:	e8 df f7 ff ff       	call   0x406d42
407563:	89 85 e4 dd ff ff    	mov    %eax,-0x221c(%ebp)
407569:	85 db                	test   %ebx,%ebx
40756b:	74 1d                	je     0x40758a
40756d:	53                   	push   %ebx
40756e:	ff 15 00 f0 40 00    	call   *0x40f000
407574:	33 c9                	xor    %ecx,%ecx
407576:	8b d9                	mov    %ecx,%ebx
407578:	89 9d c8 dd ff ff    	mov    %ebx,-0x2238(%ebp)
40757e:	85 c0                	test   %eax,%eax
407580:	75 77                	jne    0x4075f9
407582:	8b 85 e4 dd ff ff    	mov    -0x221c(%ebp),%eax
407588:	eb 02                	jmp    0x40758c
40758a:	33 c9                	xor    %ecx,%ecx
40758c:	83 bd d8 dd ff ff 00 	cmpl   $0x0,-0x2228(%ebp)
407593:	74 3a                	je     0x4075cf
407595:	85 c0                	test   %eax,%eax
407597:	75 36                	jne    0x4075cf
407599:	8b 85 dc dd ff ff    	mov    -0x2224(%ebp),%eax
40759f:	89 85 a0 dd ff ff    	mov    %eax,-0x2260(%ebp)
4075a5:	8d 85 e8 fd ff ff    	lea    -0x218(%ebp),%eax
4075ab:	89 8d a4 dd ff ff    	mov    %ecx,-0x225c(%ebp)
4075b1:	89 8d a8 dd ff ff    	mov    %ecx,-0x2258(%ebp)
4075b7:	8d 8d a0 dd ff ff    	lea    -0x2260(%ebp),%ecx
4075bd:	50                   	push   %eax
4075be:	e8 cd f7 ff ff       	call   0x406d90
4075c3:	33 c9                	xor    %ecx,%ecx
4075c5:	89 8d a0 dd ff ff    	mov    %ecx,-0x2260(%ebp)
4075cb:	85 c0                	test   %eax,%eax
4075cd:	75 2a                	jne    0x4075f9
4075cf:	6a 7d                	push   $0x7d
4075d1:	58                   	pop    %eax
4075d2:	66 39 07             	cmp    %ax,(%edi)
4075d5:	0f 85 32 fa ff ff    	jne    0x40700d
4075db:	eb 2c                	jmp    0x407609
4075dd:	8b c8                	mov    %eax,%ecx
4075df:	e8 41 f8 ff ff       	call   0x406e25
4075e4:	8b f0                	mov    %eax,%esi
4075e6:	8b 85 d8 dd ff ff    	mov    -0x2228(%ebp),%eax
4075ec:	85 c0                	test   %eax,%eax
4075ee:	74 19                	je     0x407609
4075f0:	50                   	push   %eax
4075f1:	ff 15 00 f0 40 00    	call   *0x40f000
4075f7:	eb 10                	jmp    0x407609
4075f9:	8b c8                	mov    %eax,%ecx
4075fb:	e8 25 f8 ff ff       	call   0x406e25
407600:	8b f0                	mov    %eax,%esi
407602:	eb 05                	jmp    0x407609
407604:	be 09 00 02 80       	mov    $0x80020009,%esi
407609:	85 db                	test   %ebx,%ebx
40760b:	74 07                	je     0x407614
40760d:	53                   	push   %ebx
40760e:	ff 15 00 f0 40 00    	call   *0x40f000
407614:	8b c6                	mov    %esi,%eax
407616:	8b 4d f4             	mov    -0xc(%ebp),%ecx
407619:	64 89 0d 00 00 00 00 	mov    %ecx,%fs:0x0
407620:	59                   	pop    %ecx
407621:	5f                   	pop    %edi
407622:	5e                   	pop    %esi
407623:	5b                   	pop    %ebx
407624:	8b 4d f0             	mov    -0x10(%ebp),%ecx
407627:	33 cd                	xor    %ebp,%ecx
407629:	e8 32 22 00 00       	call   0x409860
40762e:	c9                   	leave
40762f:	c2 10 00             	ret    $0x10
407632:	8b ff                	mov    %edi,%edi
407634:	56                   	push   %esi