4011f9:	e8 d6 fe ff ff       	call   0x4010d4
4011fe:	8b f0                	mov    %eax,%esi
401200:	33 c0                	xor    %eax,%eax
401202:	3b f7                	cmp    %edi,%esi
401204:	0f 95 c0             	setne  %al
401207:	68 bc 0a 41 00       	push   $0x410abc
40120c:	89 75 ec             	mov    %esi,-0x14(%ebp)
40120f:	50                   	push   %eax
401210:	e8 55 fe ff ff       	call   0x40106a
401215:	8b 45 ec             	mov    -0x14(%ebp),%eax
401218:	2b 45 f4             	sub    -0xc(%ebp),%eax
40121b:	6a 05                	push   $0x5
40121d:	03 45 f8             	add    -0x8(%ebp),%eax
401220:	59                   	pop    %ecx
401221:	ff 75 f4             	push   -0xc(%ebp)
401224:	99                   	cltd
401225:	8d 7d d4             	lea    -0x2c(%ebp),%edi
401228:	f3 a5                	rep movsl %ds:(%esi),%es:(%edi)
40122a:	89 45 e8             	mov    %eax,-0x18(%ebp)
40122d:	8b f2                	mov    %edx,%esi
40122f:	e8 37 0d 00 00       	call   0x401f6b
401234:	83 c4 2c             	add    $0x2c,%esp
401237:	8b 4d e4             	mov    -0x1c(%ebp),%ecx
40123a:	03 4d e0             	add    -0x20(%ebp),%ecx
40123d:	6a 00                	push   $0x0
40123f:	29 4d e8             	sub    %ecx,-0x18(%ebp)
401242:	ff 75 e8             	push   -0x18(%ebp)
401245:	ff 75 fc             	push   -0x4(%ebp)
401248:	83 de 00             	sbb    $0x0,%esi
40124b:	e8 7d 23 00 00       	call   0x4035cd
401250:	ff 75 fc             	push   -0x4(%ebp)
401253:	bf 04 01 00 00       	mov    $0x104,%edi
401258:	57                   	push   %edi
401259:	6a 01                	push   $0x1
40125b:	53                   	push   %ebx
40125c:	e8 d1 16 00 00       	call   0x402932
401261:	33 c9                	xor    %ecx,%ecx
401263:	3b c8                	cmp    %eax,%ecx
401265:	1b c0                	sbb    %eax,%eax
401267:	be e0 0a 41 00       	mov    $0x410ae0,%esi
40126c:	f7 d8                	neg    %eax
40126e:	56                   	push   %esi
40126f:	50                   	push   %eax
401270:	e8 f5 fd ff ff       	call   0x40106a
401275:	66 8b 0b             	mov    (%ebx),%cx
401278:	b8 fc 0a 41 00       	mov    $0x410afc,%eax
40127d:	83 c4 24             	add    $0x24,%esp
401280:	66 3b 08             	cmp    (%eax),%cx
401283:	75 05                	jne    0x40128a
401285:	89 5d f0             	mov    %ebx,-0x10(%ebp)
401288:	eb 54                	jmp    0x4012de
40128a:	8b 45 e8             	mov    -0x18(%ebp),%eax
40128d:	05 fc fe ff ff       	add    $0xfffffefc,%eax
401292:	79 02                	jns    0x401296
401294:	33 c0                	xor    %eax,%eax
401296:	6a 00                	push   $0x0
401298:	50                   	push   %eax
401299:	ff 75 fc             	push   -0x4(%ebp)
40129c:	e8 2c 23 00 00       	call   0x4035cd
4012a1:	ff 75 fc             	push   -0x4(%ebp)
4012a4:	57                   	push   %edi
4012a5:	6a 01                	push   $0x1
4012a7:	53                   	push   %ebx
4012a8:	e8 85 16 00 00       	call   0x402932
4012ad:	8b f8                	mov    %eax,%edi
4012af:	33 c0                	xor    %eax,%eax
4012b1:	3b c7                	cmp    %edi,%eax
4012b3:	1b c0                	sbb    %eax,%eax
4012b5:	f7 d8                	neg    %eax
4012b7:	56                   	push   %esi
4012b8:	50                   	push   %eax
4012b9:	e8 ac fd ff ff       	call   0x40106a
4012be:	83 c4 24             	add    $0x24,%esp
4012c1:	8d 44 1f ff          	lea    -0x1(%edi,%ebx,1),%eax
4012c5:	eb 0e                	jmp    0x4012d5
4012c7:	66 8b 10             	mov    (%eax),%dx
4012ca:	b9 fc 0a 41 00       	mov    $0x410afc,%ecx
4012cf:	66 3b 11             	cmp    (%ecx),%dx
4012d2:	74 07                	je     0x4012db
4012d4:	48                   	dec    %eax
4012d5:	3b c3                	cmp    %ebx,%eax
4012d7:	73 ee                	jae    0x4012c7
4012d9:	eb 03                	jmp    0x4012de
4012db:	89 45 f0             	mov    %eax,-0x10(%ebp)
4012de:	ff 75 fc             	push   -0x4(%ebp)
4012e1:	e8 a5 25 00 00       	call   0x40388b
4012e6:	8b 45 f0             	mov    -0x10(%ebp),%eax
4012e9:	59                   	pop    %ecx
4012ea:	5f                   	pop    %edi
4012eb:	5e                   	pop    %esi
4012ec:	c9                   	leave
4012ed:	c3                   	ret
4012ee:	55                   	push   %ebp
4012ef:	8b ec                	mov    %esp,%ebp
4012f1:	83 ec 0c             	sub    $0xc,%esp
4012f4:	56                   	push   %esi
4012f5:	6a 2e                	push   $0x2e
4012f7:	ff 75 08             	push   0x8(%ebp)
4012fa:	33 f6                	xor    %esi,%esi
4012fc:	89 75 f8             	mov    %esi,-0x8(%ebp)
4012ff:	e8 b4 0b 00 00       	call   0x401eb8
401304:	59                   	pop    %ecx
401305:	59                   	pop    %ecx
401306:	85 c0                	test   %eax,%eax
401308:	74 1d                	je     0x401327
40130a:	56                   	push   %esi
40130b:	68 f8 3d 41 00       	push   $0x413df8
401310:	68 00 04 00 00       	push   $0x400
401315:	56                   	push   %esi
401316:	ff 75 08             	push   0x8(%ebp)
401319:	56                   	push   %esi
40131a:	ff 15 08 f0 40 00    	call   *0x40f008
401320:	85 c0                	test   %eax,%eax
401322:	74 74                	je     0x401398
401324:	46                   	inc    %esi
401325:	eb 71                	jmp    0x401398
401327:	57                   	push   %edi
401328:	68 00 0b 41 00       	push   $0x410b00
40132d:	8d 45 f4             	lea    -0xc(%ebp),%eax
401330:	50                   	push   %eax
401331:	8d 45 fc             	lea    -0x4(%ebp),%eax
401334:	50                   	push   %eax
401335:	e8 aa 23 00 00       	call   0x4036e4
40133a:	ff 75 f4             	push   -0xc(%ebp)
40133d:	8b f8                	mov    %eax,%edi
40133f:	ff 75 fc             	push   -0x4(%ebp)
401342:	e8 69 13 00 00       	call   0x4026b0
401347:	83 c4 14             	add    $0x14,%esp
40134a:	3b fe                	cmp    %esi,%edi
40134c:	75 49                	jne    0x401397
40134e:	8d 45 f8             	lea    -0x8(%ebp),%eax
401351:	50                   	push   %eax
401352:	bf 10 0b 41 00       	mov    $0x410b10,%edi
401357:	57                   	push   %edi
401358:	ff 75 fc             	push   -0x4(%ebp)
40135b:	eb 20                	jmp    0x40137d
40135d:	56                   	push   %esi
40135e:	68 f8 3d 41 00       	push   $0x413df8
401363:	68 00 04 00 00       	push   $0x400
401368:	50                   	push   %eax
401369:	ff 75 08             	push   0x8(%ebp)
40136c:	56                   	push   %esi
40136d:	ff 15 08 f0 40 00    	call   *0x40f008
401373:	85 c0                	test   %eax,%eax
401375:	75 14                	jne    0x40138b
401377:	8d 45 f8             	lea    -0x8(%ebp),%eax
40137a:	50                   	push   %eax
40137b:	57                   	push   %edi
40137c:	56                   	push   %esi
40137d:	e8 15 19 00 00       	call   0x402c97
401382:	83 c4 0c             	add    $0xc,%esp
401385:	3b c6                	cmp    %esi,%eax
401387:	75 d4                	jne    0x40135d
401389:	eb 03                	jmp    0x40138e
40138b:	33 f6                	xor    %esi,%esi
40138d:	46                   	inc    %esi
40138e:	ff 75 fc             	push   -0x4(%ebp)
401391:	e8 d5 0b 00 00       	call   0x401f6b
401396:	59                   	pop    %ecx
401397:	5f                   	pop    %edi
401398:	8b c6                	mov    %esi,%eax
40139a:	5e                   	pop    %esi
40139b:	c9                   	leave
40139c:	c3                   	ret
40139d:	55                   	push   %ebp
40139e:	8b ec                	mov    %esp,%ebp
4013a0:	83 7d 08 02          	cmpl   $0x2,0x8(%ebp)
4013a4:	74 0c                	je     0x4013b2
4013a6:	83 7d 08 04          	cmpl   $0x4,0x8(%ebp)
4013aa:	76 29                	jbe    0x4013d5
4013ac:	83 7d 08 06          	cmpl   $0x6,0x8(%ebp)
4013b0:	77 23                	ja     0x4013d5
4013b2:	a1 68 3b 41 00       	mov    0x413b68,%eax
4013b7:	85 c0                	test   %eax,%eax
4013b9:	74 1a                	je     0x4013d5
4013bb:	81 25 80 3b 41 00 ff 	andl   $0xffffdfff,0x413b80
4013c2:	df ff ff
4013c5:	6a 70                	push   $0x70
4013c7:	68 70 3b 41 00       	push   $0x413b70
4013cc:	6a 09                	push   $0x9
4013ce:	50                   	push   %eax
4013cf:	ff 15 0c f0 40 00    	call   *0x40f00c
4013d5:	33 c0                	xor    %eax,%eax
4013d7:	40                   	inc    %eax
4013d8:	5d                   	pop    %ebp
4013d9:	c3                   	ret
4013da:	55                   	push   %ebp
4013db:	8b ec                	mov    %esp,%ebp
4013dd:	ff 75 08             	push   0x8(%ebp)
4013e0:	ff 15 4c f0 40 00    	call   *0x40f04c
4013e6:	85 c0                	test   %eax,%eax
4013e8:	74 1a                	je     0x401404
4013ea:	83 f8 02             	cmp    $0x2,%eax
4013ed:	75 06                	jne    0x4013f5
4013ef:	f6 45 08 03          	testb  $0x3,0x8(%ebp)
4013f3:	75 0f                	jne    0x401404
4013f5:	6a 01                	push   $0x1
4013f7:	6a 01                	push   $0x1
4013f9:	ff 75 08             	push   0x8(%ebp)
4013fc:	ff 15 14 f0 40 00    	call   *0x40f014
401402:	5d                   	pop    %ebp
401403:	c3                   	ret
401404:	33 c0                	xor    %eax,%eax
401406:	40                   	inc    %eax
401407:	5d                   	pop    %ebp
401408:	c3                   	ret
401409:	c3                   	ret
40140a:	55                   	push   %ebp
40140b:	8b ec                	mov    %esp,%ebp
40140d:	51                   	push   %ecx
40140e:	66 83 7d 08 04       	cmpw   $0x4,0x8(%ebp)
401413:	72 6f                	jb     0x401484
401415:	85 c0                	test   %eax,%eax
401417:	74 6b                	je     0x401484
401419:	0f b7 55 08          	movzwl 0x8(%ebp),%edx
40141d:	57                   	push   %edi
40141e:	8b 38                	mov    (%eax),%edi
401420:	8b cf                	mov    %edi,%ecx
401422:	6b c9 05             	imul   $0x5,%ecx,%ecx
401425:	83 c1 04             	add    $0x4,%ecx
401428:	3b d1                	cmp    %ecx,%edx
40142a:	72 57                	jb     0x401483
40142c:	53                   	push   %ebx
40142d:	56                   	push   %esi
40142e:	68 09 14 40 00       	push   $0x401409
401433:	8d 74 07 04          	lea    0x4(%edi,%eax,1),%esi
401437:	e8 d2 17 00 00       	call   0x402c0e
40143c:	8d 3c be             	lea    (%esi,%edi,4),%edi
40143f:	8d 5e 0c             	lea    0xc(%esi),%ebx
401442:	59                   	pop    %ecx
401443:	89 45 fc             	mov    %eax,-0x4(%ebp)
401446:	89 7d 08             	mov    %edi,0x8(%ebp)
401449:	3b df                	cmp    %edi,%ebx
40144b:	73 2b                	jae    0x401478
40144d:	8b fb                	mov    %ebx,%edi
40144f:	2b fe                	sub    %esi,%edi
401451:	8b 03                	mov    (%ebx),%eax
401453:	85 c0                	test   %eax,%eax
401455:	74 16                	je     0x40146d
401457:	83 f8 ff             	cmp    $0xffffffff,%eax
40145a:	74 11                	je     0x40146d
40145c:	83 f8 fe             	cmp    $0xfffffffe,%eax
40145f:	74 0c                	je     0x40146d
401461:	8b c7                	mov    %edi,%eax
401463:	c1 f8 02             	sar    $0x2,%eax
401466:	50                   	push   %eax
401467:	e8 2f 25 00 00       	call   0x40399b
40146c:	59                   	pop    %ecx
40146d:	83 c3 04             	add    $0x4,%ebx
401470:	83 c7 04             	add    $0x4,%edi
401473:	3b 5d 08             	cmp    0x8(%ebp),%ebx
401476:	72 d9                	jb     0x401451
401478:	ff 75 fc             	push   -0x4(%ebp)
40147b:	e8 8e 17 00 00       	call   0x402c0e
401480:	59                   	pop    %ecx
401481:	5e                   	pop    %esi
401482:	5b                   	pop    %ebx
401483:	5f                   	pop    %edi
401484:	c9                   	leave
401485:	c3                   	ret
401486:	55                   	push   %ebp
401487:	8b ec                	mov    %esp,%ebp
401489:	56                   	push   %esi
40148a:	57                   	push   %edi
40148b:	68 09 14 40 00       	push   $0x401409
401490:	e8 79 17 00 00       	call   0x402c0e
401495:	ff 75 08             	push   0x8(%ebp)
401498:	8b f8                	mov    %eax,%edi
40149a:	e8 11 16 00 00       	call   0x402ab0
40149f:	59                   	pop    %ecx
4014a0:	59                   	pop    %ecx
4014a1:	85 c0                	test   %eax,%eax
4014a3:	78 0b                	js     0x4014b0
4014a5:	50                   	push   %eax
4014a6:	e8 ca 1b 00 00       	call   0x403075
4014ab:	59                   	pop    %ecx
4014ac:	8b f0                	mov    %eax,%esi
4014ae:	eb 03                	jmp    0x4014b3
4014b0:	83 ce ff             	or     $0xffffffff,%esi
4014b3:	57                   	push   %edi
4014b4:	e8 55 17 00 00       	call   0x402c0e
4014b9:	59                   	pop    %ecx
4014ba:	5f                   	pop    %edi
4014bb:	8b c6                	mov    %esi,%eax
4014bd:	5e                   	pop    %esi
4014be:	5d                   	pop    %ebp
4014bf:	c3                   	ret
4014c0:	55                   	push   %ebp
4014c1:	8b ec                	mov    %esp,%ebp
4014c3:	83 ec 10             	sub    $0x10,%esp
4014c6:	56                   	push   %esi
4014c7:	57                   	push   %edi
4014c8:	e8 b6 0d 00 00       	call   0x402283
4014cd:	50                   	push   %eax
4014ce:	e8 b3 ff ff ff       	call   0x401486
4014d3:	8b f8                	mov    %eax,%edi
4014d5:	e8 a9 0d 00 00       	call   0x402283
4014da:	83 c0 20             	add    $0x20,%eax
4014dd:	50                   	push   %eax
4014de:	e8 a3 ff ff ff       	call   0x401486
4014e3:	8b f0                	mov    %eax,%esi
4014e5:	89 75 f4             	mov    %esi,-0xc(%ebp)
4014e8:	e8 96 0d 00 00       	call   0x402283
4014ed:	83 c0 40             	add    $0x40,%eax
4014f0:	50                   	push   %eax
4014f1:	e8 90 ff ff ff       	call   0x401486
4014f6:	83 c4 0c             	add    $0xc,%esp
4014f9:	89 45 f0             	mov    %eax,-0x10(%ebp)
4014fc:	83 ff ff             	cmp    $0xffffffff,%edi
4014ff:	74 10                	je     0x401511
401501:	3b fe                	cmp    %esi,%edi
401503:	0f 84 0a 01 00 00    	je     0x401613
401509:	3b f8                	cmp    %eax,%edi
40150b:	0f 84 02 01 00 00    	je     0x401613
401511:	83 fe ff             	cmp    $0xffffffff,%esi
401514:	74 10                	je     0x401526
401516:	3b f7                	cmp    %edi,%esi
401518:	0f 84 f5 00 00 00    	je     0x401613
40151e:	3b f0                	cmp    %eax,%esi
401520:	0f 84 ed 00 00 00    	je     0x401613
401526:	83 f8 ff             	cmp    $0xffffffff,%eax
401529:	74 10                	je     0x40153b
40152b:	3b c7                	cmp    %edi,%eax
40152d:	0f 84 e0 00 00 00    	je     0x401613
401533:	3b c6                	cmp    %esi,%eax
401535:	0f 84 d8 00 00 00    	je     0x401613
40153b:	8b 35 40 f0 40 00    	mov    0x40f040,%esi
401541:	53                   	push   %ebx
401542:	6a f6                	push   $0xfffffff6
401544:	ff d6                	call   *%esi
401546:	6a f5                	push   $0xfffffff5
401548:	8b d8                	mov    %eax,%ebx
40154a:	ff d6                	call   *%esi
40154c:	6a f4                	push   $0xfffffff4
40154e:	89 45 fc             	mov    %eax,-0x4(%ebp)
401551:	ff d6                	call   *%esi
401553:	89 45 f8             	mov    %eax,-0x8(%ebp)
401556:	e8 28 0d 00 00       	call   0x402283
40155b:	50                   	push   %eax
40155c:	e8 2a 23 00 00       	call   0x40388b
401561:	e8 1d 0d 00 00       	call   0x402283
401566:	83 c0 20             	add    $0x20,%eax
401569:	50                   	push   %eax
40156a:	e8 1c 23 00 00       	call   0x40388b
40156f:	8b 35 48 f0 40 00    	mov    0x40f048,%esi
401575:	59                   	pop    %ecx
401576:	59                   	pop    %ecx
401577:	3b fb                	cmp    %ebx,%edi
401579:	74 05                	je     0x401580
40157b:	39 5d f4             	cmp    %ebx,-0xc(%ebp)