40a1c7:	8d 45 f4             	lea    -0xc(%ebp),%eax
40a1ca:	50                   	push   %eax
40a1cb:	47                   	inc    %edi
40a1cc:	b8 01 01 00 00       	mov    $0x101,%eax
40a1d1:	83 7d 08 00          	cmpl   $0x0,0x8(%ebp)
40a1d5:	0f 44 c7             	cmove  %edi,%eax
40a1d8:	50                   	push   %eax
40a1d9:	ff 75 fc             	push   -0x4(%ebp)
40a1dc:	ff 73 18             	push   0x18(%ebx)
40a1df:	e8 5b 6c 03 00       	call   0x440e3f
40a1e4:	8b f0                	mov    %eax,%esi
40a1e6:	85 f6                	test   %esi,%esi
40a1e8:	0f 88 98 00 00 00    	js     0x40a286
40a1ee:	83 7b 20 00          	cmpl   $0x0,0x20(%ebx)
40a1f2:	0f 84 aa 00 00 00    	je     0x40a2a2
40a1f8:	6a 00                	push   $0x0
40a1fa:	8d 45 f8             	lea    -0x8(%ebp),%eax
40a1fd:	50                   	push   %eax
40a1fe:	ff 73 20             	push   0x20(%ebx)
40a201:	ff 75 0c             	push   0xc(%ebp)
40a204:	e8 c6 cf ff ff       	call   0x4071cf
40a209:	8b f0                	mov    %eax,%esi
40a20b:	85 f6                	test   %esi,%esi
40a20d:	79 07                	jns    0x40a216
40a20f:	68 c4 e8 44 00       	push   $0x44e8c4
40a214:	eb a2                	jmp    0x40a1b8
40a216:	6a 00                	push   $0x0
40a218:	6a 00                	push   $0x0
40a21a:	8d 45 f0             	lea    -0x10(%ebp),%eax
40a21d:	50                   	push   %eax
40a21e:	6a 00                	push   $0x0
40a220:	ff 75 f8             	push   -0x8(%ebp)
40a223:	ff 75 f4             	push   -0xc(%ebp)
40a226:	ff 15 1c b0 44 00    	call   *0x44b01c
40a22c:	8b c8                	mov    %eax,%ecx
40a22e:	83 e9 00             	sub    $0x0,%ecx
40a231:	74 6f                	je     0x40a2a2
40a233:	49                   	dec    %ecx
40a234:	83 e9 01             	sub    $0x1,%ecx
40a237:	74 36                	je     0x40a26f
40a239:	85 c0                	test   %eax,%eax
40a23b:	74 65                	je     0x40a2a2
40a23d:	0f b7 f0             	movzwl %ax,%esi
40a240:	81 ce 00 00 07 80    	or     $0x80070000,%esi
40a246:	85 c0                	test   %eax,%eax
40a248:	0f 4e f0             	cmovle %eax,%esi
40a24b:	b8 05 40 00 80       	mov    $0x80004005,%eax
40a250:	85 f6                	test   %esi,%esi
40a252:	0f 49 f0             	cmovns %eax,%esi
40a255:	56                   	push   %esi
40a256:	68 22 03 00 00       	push   $0x322
40a25b:	68 c4 e1 44 00       	push   $0x44e1c4
40a260:	e8 6e 95 ff ff       	call   0x4037d3
40a265:	68 1c e9 44 00       	push   $0x44e91c
40a26a:	e9 49 ff ff ff       	jmp    0x40a1b8
40a26f:	ff 75 f8             	push   -0x8(%ebp)
40a272:	ff 75 fc             	push   -0x4(%ebp)
40a275:	68 e4 e8 44 00       	push   $0x44e8e4
40a27a:	6a 02                	push   $0x2
40a27c:	e8 99 63 03 00       	call   0x44061a
40a281:	83 c4 10             	add    $0x10,%esp
40a284:	eb 1a                	jmp    0x40a2a0
40a286:	ff 75 fc             	push   -0x4(%ebp)
40a289:	81 fe 02 00 07 80    	cmp    $0x80070002,%esi
40a28f:	75 31                	jne    0x40a2c2
40a291:	68 74 e8 44 00       	push   $0x44e874
40a296:	6a 02                	push   $0x2
40a298:	e8 7d 63 03 00       	call   0x44061a
40a29d:	83 c4 0c             	add    $0xc,%esp
40a2a0:	33 ff                	xor    %edi,%edi
40a2a2:	6a 00                	push   $0x0
40a2a4:	6a 00                	push   $0x0
40a2a6:	57                   	push   %edi
40a2a7:	ff 73 04             	push   0x4(%ebx)
40a2aa:	ff 75 0c             	push   0xc(%ebp)
40a2ad:	e8 a0 de ff ff       	call   0x408152
40a2b2:	8b f0                	mov    %eax,%esi
40a2b4:	85 f6                	test   %esi,%esi
40a2b6:	79 2f                	jns    0x40a2e7
40a2b8:	68 18 d2 44 00       	push   $0x44d218
40a2bd:	e9 f6 fe ff ff       	jmp    0x40a1b8
40a2c2:	68 98 e8 44 00       	push   $0x44e898
40a2c7:	56                   	push   %esi
40a2c8:	e8 62 5e 03 00       	call   0x44012f
40a2cd:	83 c4 0c             	add    $0xc,%esp
40a2d0:	85 f6                	test   %esi,%esi
40a2d2:	79 13                	jns    0x40a2e7
40a2d4:	56                   	push   %esi
40a2d5:	ff 75 fc             	push   -0x4(%ebp)
40a2d8:	68 40 e9 44 00       	push   $0x44e940
40a2dd:	6a 02                	push   $0x2
40a2df:	e8 36 63 03 00       	call   0x44061a
40a2e4:	83 c4 10             	add    $0x10,%esp
40a2e7:	ff 75 fc             	push   -0x4(%ebp)
40a2ea:	e8 a4 84 ff ff       	call   0x402793
40a2ef:	ff 75 f8             	push   -0x8(%ebp)
40a2f2:	e8 9c 84 ff ff       	call   0x402793
40a2f7:	83 7d f4 00          	cmpl   $0x0,-0xc(%ebp)
40a2fb:	74 09                	je     0x40a306
40a2fd:	ff 75 f4             	push   -0xc(%ebp)
40a300:	ff 15 00 b0 44 00    	call   *0x44b000
40a306:	5f                   	pop    %edi
40a307:	8b c6                	mov    %esi,%eax
40a309:	5e                   	pop    %esi
40a30a:	5b                   	pop    %ebx
40a30b:	8b e5                	mov    %ebp,%esp
40a30d:	5d                   	pop    %ebp
40a30e:	c2 08 00             	ret    $0x8
40a311:	55                   	push   %ebp
40a312:	8b ec                	mov    %esp,%ebp
40a314:	83 ec 2c             	sub    $0x2c,%esp
40a317:	53                   	push   %ebx
40a318:	56                   	push   %esi
40a319:	57                   	push   %edi
40a31a:	6a 06                	push   $0x6
40a31c:	59                   	pop    %ecx
40a31d:	33 c0                	xor    %eax,%eax
40a31f:	8d 7d d4             	lea    -0x2c(%ebp),%edi
40a322:	f3 ab                	rep stos %eax,%es:(%edi)
40a324:	8b 7d 08             	mov    0x8(%ebp),%edi
40a327:	33 d2                	xor    %edx,%edx
40a329:	33 c9                	xor    %ecx,%ecx
40a32b:	89 55 f8             	mov    %edx,-0x8(%ebp)
40a32e:	41                   	inc    %ecx
40a32f:	89 55 f0             	mov    %edx,-0x10(%ebp)
40a332:	b8 01 01 00 00       	mov    $0x101,%eax
40a337:	89 55 f4             	mov    %edx,-0xc(%ebp)
40a33a:	39 57 24             	cmp    %edx,0x24(%edi)
40a33d:	8b da                	mov    %edx,%ebx
40a33f:	52                   	push   %edx
40a340:	0f 44 c1             	cmove  %ecx,%eax
40a343:	89 55 ec             	mov    %edx,-0x14(%ebp)
40a346:	89 45 08             	mov    %eax,0x8(%ebp)
40a349:	8d 45 f8             	lea    -0x8(%ebp),%eax
40a34c:	50                   	push   %eax
40a34d:	ff 77 1c             	push   0x1c(%edi)
40a350:	89 55 fc             	mov    %edx,-0x4(%ebp)
40a353:	ff 75 0c             	push   0xc(%ebp)
40a356:	e8 74 ce ff ff       	call   0x4071cf
40a35b:	8b f0                	mov    %eax,%esi
40a35d:	85 f6                	test   %esi,%esi
40a35f:	79 0a                	jns    0x40a36b
40a361:	68 54 e8 44 00       	push   $0x44e854
40a366:	e9 c3 02 00 00       	jmp    0x40a62e
40a36b:	39 5f 20             	cmp    %ebx,0x20(%edi)
40a36e:	74 21                	je     0x40a391
40a370:	6a 00                	push   $0x0
40a372:	8d 45 f0             	lea    -0x10(%ebp),%eax
40a375:	50                   	push   %eax
40a376:	ff 77 20             	push   0x20(%edi)
40a379:	ff 75 0c             	push   0xc(%ebp)
40a37c:	e8 4e ce ff ff       	call   0x4071cf
40a381:	8b f0                	mov    %eax,%esi
40a383:	85 f6                	test   %esi,%esi
40a385:	79 0a                	jns    0x40a391
40a387:	68 c4 e8 44 00       	push   $0x44e8c4
40a38c:	e9 9d 02 00 00       	jmp    0x40a62e
40a391:	8d 45 f4             	lea    -0xc(%ebp),%eax
40a394:	50                   	push   %eax
40a395:	ff 75 08             	push   0x8(%ebp)
40a398:	ff 75 f8             	push   -0x8(%ebp)
40a39b:	ff 77 18             	push   0x18(%edi)
40a39e:	e8 9c 6a 03 00       	call   0x440e3f
40a3a3:	8b f0                	mov    %eax,%esi
40a3a5:	81 fe 02 00 07 80    	cmp    $0x80070002,%esi
40a3ab:	75 38                	jne    0x40a3e5
40a3ad:	ff 75 f8             	push   -0x8(%ebp)
40a3b0:	68 74 e8 44 00       	push   $0x44e874
40a3b5:	6a 02                	push   $0x2
40a3b7:	e8 5e 62 03 00       	call   0x44061a
40a3bc:	83 c4 0c             	add    $0xc,%esp
40a3bf:	8d 45 d4             	lea    -0x2c(%ebp),%eax
40a3c2:	50                   	push   %eax
40a3c3:	ff 77 04             	push   0x4(%edi)
40a3c6:	ff 75 0c             	push   0xc(%ebp)
40a3c9:	e8 69 dd ff ff       	call   0x408137
40a3ce:	8b f0                	mov    %eax,%esi
40a3d0:	85 f6                	test   %esi,%esi
40a3d2:	79 0a                	jns    0x40a3de
40a3d4:	68 74 e9 44 00       	push   $0x44e974
40a3d9:	e9 50 02 00 00       	jmp    0x40a62e
40a3de:	33 f6                	xor    %esi,%esi
40a3e0:	e9 68 02 00 00       	jmp    0x40a64d
40a3e5:	85 f6                	test   %esi,%esi
40a3e7:	79 0a                	jns    0x40a3f3
40a3e9:	68 90 e9 44 00       	push   $0x44e990
40a3ee:	e9 3b 02 00 00       	jmp    0x40a62e
40a3f3:	8b 35 1c b0 44 00    	mov    0x44b01c,%esi
40a3f9:	8d 45 fc             	lea    -0x4(%ebp),%eax
40a3fc:	50                   	push   %eax
40a3fd:	6a 00                	push   $0x0
40a3ff:	8d 45 ec             	lea    -0x14(%ebp),%eax
40a402:	50                   	push   %eax
40a403:	6a 00                	push   $0x0
40a405:	ff 75 f0             	push   -0x10(%ebp)
40a408:	ff 75 f4             	push   -0xc(%ebp)
40a40b:	ff d6                	call   *%esi
40a40d:	83 f8 02             	cmp    $0x2,%eax
40a410:	75 16                	jne    0x40a428
40a412:	ff 75 f0             	push   -0x10(%ebp)
40a415:	ff 75 f8             	push   -0x8(%ebp)
40a418:	68 e4 e8 44 00       	push   $0x44e8e4
40a41d:	50                   	push   %eax
40a41e:	e8 f7 61 03 00       	call   0x44061a
40a423:	83 c4 10             	add    $0x10,%esp
40a426:	eb 97                	jmp    0x40a3bf
40a428:	85 c0                	test   %eax,%eax
40a42a:	74 32                	je     0x40a45e
40a42c:	0f b7 f0             	movzwl %ax,%esi
40a42f:	81 ce 00 00 07 80    	or     $0x80070000,%esi
40a435:	85 c0                	test   %eax,%eax
40a437:	0f 4e f0             	cmovle %eax,%esi
40a43a:	b8 05 40 00 80       	mov    $0x80004005,%eax
40a43f:	85 f6                	test   %esi,%esi
40a441:	0f 49 f0             	cmovns %eax,%esi
40a444:	56                   	push   %esi
40a445:	68 6f 03 00 00       	push   $0x36f
40a44a:	68 c4 e1 44 00       	push   $0x44e1c4
40a44f:	e8 7f 93 ff ff       	call   0x4037d3
40a454:	68 b0 e9 44 00       	push   $0x44e9b0
40a459:	e9 d0 01 00 00       	jmp    0x40a62e
40a45e:	8b 45 fc             	mov    -0x4(%ebp),%eax
40a461:	6a 01                	push   $0x1
40a463:	83 c0 02             	add    $0x2,%eax
40a466:	50                   	push   %eax
40a467:	e8 68 94 ff ff       	call   0x4038d4
40a46c:	8b d8                	mov    %eax,%ebx
40a46e:	85 db                	test   %ebx,%ebx
40a470:	75 27                	jne    0x40a499
40a472:	be 0e 00 07 80       	mov    $0x8007000e,%esi
40a477:	56                   	push   %esi
40a478:	68 72 03 00 00       	push   $0x372
40a47d:	68 c4 e1 44 00       	push   $0x44e1c4
40a482:	e8 4c 93 ff ff       	call   0x4037d3
40a487:	68 dc e9 44 00       	push   $0x44e9dc
40a48c:	56                   	push   %esi
40a48d:	e8 9d 5c 03 00       	call   0x44012f
40a492:	59                   	pop    %ecx
40a493:	59                   	pop    %ecx
40a494:	e9 a1 01 00 00       	jmp    0x40a63a
40a499:	8d 45 fc             	lea    -0x4(%ebp),%eax
40a49c:	50                   	push   %eax
40a49d:	53                   	push   %ebx
40a49e:	8d 45 ec             	lea    -0x14(%ebp),%eax
40a4a1:	50                   	push   %eax
40a4a2:	6a 00                	push   $0x0
40a4a4:	ff 75 f0             	push   -0x10(%ebp)
40a4a7:	ff 75 f4             	push   -0xc(%ebp)
40a4aa:	ff d6                	call   *%esi
40a4ac:	85 c0                	test   %eax,%eax
40a4ae:	74 32                	je     0x40a4e2
40a4b0:	0f b7 f0             	movzwl %ax,%esi
40a4b3:	81 ce 00 00 07 80    	or     $0x80070000,%esi
40a4b9:	85 c0                	test   %eax,%eax
40a4bb:	0f 4e f0             	cmovle %eax,%esi
40a4be:	b8 05 40 00 80       	mov    $0x80004005,%eax
40a4c3:	85 f6                	test   %esi,%esi
40a4c5:	0f 49 f0             	cmovns %eax,%esi
40a4c8:	56                   	push   %esi
40a4c9:	68 75 03 00 00       	push   $0x375
40a4ce:	68 c4 e1 44 00       	push   $0x44e1c4
40a4d3:	e8 fb 92 ff ff       	call   0x4037d3
40a4d8:	68 1c e9 44 00       	push   $0x44e91c
40a4dd:	e9 4c 01 00 00       	jmp    0x40a62e
40a4e2:	8b 45 ec             	mov    -0x14(%ebp),%eax
40a4e5:	83 e8 01             	sub    $0x1,%eax
40a4e8:	0f 84 f4 00 00 00    	je     0x40a5e2
40a4ee:	83 e8 01             	sub    $0x1,%eax
40a4f1:	74 56                	je     0x40a549
40a4f3:	48                   	dec    %eax
40a4f4:	83 e8 01             	sub    $0x1,%eax
40a4f7:	74 43                	je     0x40a53c
40a4f9:	83 e8 07             	sub    $0x7,%eax
40a4fc:	74 1b                	je     0x40a519
40a4fe:	ff 75 ec             	push   -0x14(%ebp)
40a501:	be 01 40 00 80       	mov    $0x80004001,%esi
40a506:	68 58 ea 44 00       	push   $0x44ea58
40a50b:	56                   	push   %esi
40a50c:	e8 1e 5c 03 00       	call   0x44012f
40a511:	83 c4 0c             	add    $0xc,%esp
40a514:	e9 21 01 00 00       	jmp    0x40a63a
40a519:	83 7d fc 08          	cmpl   $0x8,-0x4(%ebp)
40a51d:	74 0a                	je     0x40a529
40a51f:	be ff ff 00 80       	mov    $0x8000ffff,%esi
40a524:	e9 11 01 00 00       	jmp    0x40a63a
40a529:	ff 73 04             	push   0x4(%ebx)
40a52c:	ff 33                	push   (%ebx)
40a52e:	8d 45 d4             	lea    -0x2c(%ebp),%eax
40a531:	50                   	push   %eax
40a532:	e8 79 5d 01 00       	call   0x4202b0
40a537:	e9 b2 00 00 00       	jmp    0x40a5ee
40a53c:	83 7d fc 04          	cmpl   $0x4,-0x4(%ebp)
40a540:	75 dd                	jne    0x40a51f
40a542:	8b 03                	mov    (%ebx),%eax
40a544:	99                   	cltd
40a545:	52                   	push   %edx
40a546:	50                   	push   %eax
40a547:	eb e5                	jmp    0x40a52e
40a549:	83 7f 28 00          	cmpl   $0x0,0x28(%edi)
40a54d:	0f 84 8f 00 00 00    	je     0x40a5e2
40a553:	ff 75 fc             	push   -0x4(%ebp)
40a556:	8d 45 d4             	lea    -0x2c(%ebp),%eax
40a559:	50                   	push   %eax
40a55a:	e8 7f 79 ff ff       	call   0x401ede
40a55f:	8b f0                	mov    %eax,%esi
40a561:	85 f6                	test   %esi,%esi
40a563:	79 0a                	jns    0x40a56f
40a565:	68 08 ea 44 00       	push   $0x44ea08
40a56a:	e9 bf 00 00 00       	jmp    0x40a62e
40a56f:	ff 75 fc             	push   -0x4(%ebp)
40a572:	c7 45 e4 02 00 00 00 	movl   $0x2,-0x1c(%ebp)
40a579:	ff 75 d4             	push   -0x2c(%ebp)
40a57c:	53                   	push   %ebx
40a57d:	ff 15 14 b1 44 00    	call   *0x44b114
40a583:	89 45 08             	mov    %eax,0x8(%ebp)
40a586:	3b 45 fc             	cmp    -0x4(%ebp),%eax
40a589:	76 65                	jbe    0x40a5f0
40a58b:	50                   	push   %eax
40a58c:	8d 45 d4             	lea    -0x2c(%ebp),%eax
40a58f:	50                   	push   %eax
40a590:	e8 49 79 ff ff       	call   0x401ede
40a595:	8b f0                	mov    %eax,%esi
40a597:	85 f6                	test   %esi,%esi
40a599:	78 ca                	js     0x40a565
40a59b:	ff 75 08             	push   0x8(%ebp)
40a59e:	ff 75 d4             	push   -0x2c(%ebp)
40a5a1:	53                   	push   %ebx
40a5a2:	ff 15 14 b1 44 00    	call   *0x44b114
40a5a8:	39 45 08             	cmp    %eax,0x8(%ebp)
40a5ab:	74 43                	je     0x40a5f0
40a5ad:	ff 15 e8 b0 44 00    	call   *0x44b0e8
40a5b3:	0f b7 f0             	movzwl %ax,%esi
40a5b6:	81 ce 00 00 07 80    	or     $0x80070000,%esi
40a5bc:	85 c0                	test   %eax,%eax
40a5be:	0f 4e f0             	cmovle %eax,%esi
40a5c1:	b8 05 40 00 80       	mov    $0x80004005,%eax
40a5c6:	85 f6                	test   %esi,%esi
40a5c8:	0f 49 f0             	cmovns %eax,%esi
40a5cb:	56                   	push   %esi
40a5cc:	68 96 03 00 00       	push   $0x396
40a5d1:	68 c4 e1 44 00       	push   $0x44e1c4
40a5d6:	e8 f8 91 ff ff       	call   0x4037d3
40a5db:	68 2c ea 44 00       	push   $0x44ea2c
40a5e0:	eb 4c                	jmp    0x40a62e
40a5e2:	6a 00                	push   $0x0
40a5e4:	53                   	push   %ebx
40a5e5:	8d 45 d4             	lea    -0x2c(%ebp),%eax
40a5e8:	50                   	push   %eax
40a5e9:	e8 06 5d 01 00       	call   0x4202f4
40a5ee:	8b f0                	mov    %eax,%esi