40d2fb:	50                   	push   %eax
40d2fc:	ff 76 0c             	push   0xc(%esi)
40d2ff:	89 45 8c             	mov    %eax,-0x74(%ebp)
40d302:	68 2c 10 00 00       	push   $0x102c
40d307:	53                   	push   %ebx
40d308:	ff 15 d8 b1 41 00    	call   *0x41b1d8
40d30e:	b9 00 f0 ff ff       	mov    $0xfffff000,%ecx
40d313:	23 c1                	and    %ecx,%eax
40d315:	2d 00 10 00 00       	sub    $0x1000,%eax
40d31a:	f7 d8                	neg    %eax
40d31c:	1b c0                	sbb    %eax,%eax
40d31e:	23 c1                	and    %ecx,%eax
40d320:	05 00 20 00 00       	add    $0x2000,%eax
40d325:	89 45 88             	mov    %eax,-0x78(%ebp)
40d328:	8d 85 7c ff ff ff    	lea    -0x84(%ebp),%eax
40d32e:	50                   	push   %eax
40d32f:	ff 76 0c             	push   0xc(%esi)
40d332:	68 2b 10 00 00       	push   $0x102b
40d337:	53                   	push   %ebx
40d338:	e9 76 03 00 00       	jmp    0x40d6b3
40d33d:	83 7e 0c 01          	cmpl   $0x1,0xc(%esi)
40d341:	0f 8e 9a 03 00 00    	jle    0x40d6e1
40d347:	89 7d c4             	mov    %edi,-0x3c(%ebp)
40d34a:	ff 15 e0 b1 41 00    	call   *0x41b1e0
40d350:	8b f0                	mov    %eax,%esi
40d352:	85 f6                	test   %esi,%esi
40d354:	0f 84 87 03 00 00    	je     0x40d6e1
40d35a:	6a 1f                	push   $0x1f
40d35c:	8d 55 c4             	lea    -0x3c(%ebp),%edx
40d35f:	59                   	pop    %ecx
40d360:	e8 80 26 00 00       	call   0x40f9e5
40d365:	85 c0                	test   %eax,%eax
40d367:	74 40                	je     0x40d3a9
40d369:	39 7d c4             	cmp    %edi,-0x3c(%ebp)
40d36c:	74 3b                	je     0x40d3a9
40d36e:	ff 75 c4             	push   -0x3c(%ebp)
40d371:	68 ff 00 00 00       	push   $0xff
40d376:	68 00 04 00 00       	push   $0x400
40d37b:	57                   	push   %edi
40d37c:	56                   	push   %esi
40d37d:	ff 15 e8 b1 41 00    	call   *0x41b1e8
40d383:	ff 15 48 b2 41 00    	call   *0x41b248
40d389:	57                   	push   %edi
40d38a:	ff 73 04             	push   0x4(%ebx)
40d38d:	0f bf c8             	movswl %ax,%ecx
40d390:	57                   	push   %edi
40d391:	c1 e8 10             	shr    $0x10,%eax
40d394:	98                   	cwtl
40d395:	50                   	push   %eax
40d396:	51                   	push   %ecx
40d397:	57                   	push   %edi
40d398:	56                   	push   %esi
40d399:	ff 15 f0 b1 41 00    	call   *0x41b1f0
40d39f:	ff 75 c4             	push   -0x3c(%ebp)
40d3a2:	ff 15 24 b3 41 00    	call   *0x41b324
40d3a8:	59                   	pop    %ecx
40d3a9:	56                   	push   %esi
40d3aa:	ff 15 f4 b1 41 00    	call   *0x41b1f4
40d3b0:	e9 2c 03 00 00       	jmp    0x40d6e1
40d3b5:	6a 17                	push   $0x17
40d3b7:	8d 55 c0             	lea    -0x40(%ebp),%edx
40d3ba:	89 7d c0             	mov    %edi,-0x40(%ebp)
40d3bd:	59                   	pop    %ecx
40d3be:	e8 22 26 00 00       	call   0x40f9e5
40d3c3:	85 c0                	test   %eax,%eax
40d3c5:	0f 84 16 03 00 00    	je     0x40d6e1
40d3cb:	8b 75 c0             	mov    -0x40(%ebp),%esi
40d3ce:	85 f6                	test   %esi,%esi
40d3d0:	0f 84 0b 03 00 00    	je     0x40d6e1
40d3d6:	8d 85 7c ff ff ff    	lea    -0x84(%ebp),%eax
40d3dc:	89 7d 84             	mov    %edi,-0x7c(%ebp)
40d3df:	50                   	push   %eax
40d3e0:	57                   	push   %edi
40d3e1:	68 74 10 00 00       	push   $0x1074
40d3e6:	ff 75 c8             	push   -0x38(%ebp)
40d3e9:	89 75 90             	mov    %esi,-0x70(%ebp)
40d3ec:	ff 15 d8 b1 41 00    	call   *0x41b1d8
40d3f2:	56                   	push   %esi
40d3f3:	ff 15 24 b3 41 00    	call   *0x41b324
40d3f9:	59                   	pop    %ecx
40d3fa:	e9 e2 02 00 00       	jmp    0x40d6e1
40d3ff:	6a 2e                	push   $0x2e
40d401:	58                   	pop    %eax
40d402:	66 3b 46 0c          	cmp    0xc(%esi),%ax
40d406:	0f 85 d5 02 00 00    	jne    0x40d6e1
40d40c:	8b cb                	mov    %ebx,%ecx
40d40e:	e8 e1 02 00 00       	call   0x40d6f4
40d413:	e9 c9 02 00 00       	jmp    0x40d6e1
40d418:	8b 46 10             	mov    0x10(%esi),%eax
40d41b:	3b 43 10             	cmp    0x10(%ebx),%eax
40d41e:	0f 8d 95 02 00 00    	jge    0x40d6b9
40d424:	83 7b 10 21          	cmpl   $0x21,0x10(%ebx)
40d428:	0f 84 8b 02 00 00    	je     0x40d6b9
40d42e:	85 c0                	test   %eax,%eax
40d430:	74 09                	je     0x40d43b
40d432:	83 f8 01             	cmp    $0x1,%eax
40d435:	0f 8e 7e 02 00 00    	jle    0x40d6b9
40d43b:	57                   	push   %edi
40d43c:	57                   	push   %edi
40d43d:	68 18 10 00 00       	push   $0x1018
40d442:	51                   	push   %ecx
40d443:	ff 15 d8 b1 41 00    	call   *0x41b1d8
40d449:	8b d8                	mov    %eax,%ebx
40d44b:	85 db                	test   %ebx,%ebx
40d44d:	0f 84 8e 02 00 00    	je     0x40d6e1
40d453:	39 7e 10             	cmp    %edi,0x10(%esi)
40d456:	75 27                	jne    0x40d47f
40d458:	8d 85 7c ff ff ff    	lea    -0x84(%ebp),%eax
40d45e:	89 7d 84             	mov    %edi,-0x7c(%ebp)
40d461:	50                   	push   %eax
40d462:	57                   	push   %edi
40d463:	68 74 10 00 00       	push   $0x1074
40d468:	ff 75 c8             	push   -0x38(%ebp)
40d46b:	89 7d 90             	mov    %edi,-0x70(%ebp)
40d46e:	ff 15 d8 b1 41 00    	call   *0x41b1d8
40d474:	57                   	push   %edi
40d475:	57                   	push   %edi
40d476:	6a 0c                	push   $0xc
40d478:	53                   	push   %ebx
40d479:	ff 15 d8 b1 41 00    	call   *0x41b1d8
40d47f:	57                   	push   %edi
40d480:	6a 0c                	push   $0xc
40d482:	68 c5 00 00 00       	push   $0xc5
40d487:	53                   	push   %ebx
40d488:	ff 15 d8 b1 41 00    	call   *0x41b1d8
40d48e:	6a f0                	push   $0xfffffff0
40d490:	53                   	push   %ebx
40d491:	ff 15 20 b2 41 00    	call   *0x41b220
40d497:	83 c8 10             	or     $0x10,%eax
40d49a:	50                   	push   %eax
40d49b:	6a f0                	push   $0xfffffff0
40d49d:	53                   	push   %ebx
40d49e:	ff 15 24 b2 41 00    	call   *0x41b224
40d4a4:	e9 38 02 00 00       	jmp    0x40d6e1
40d4a9:	f6 46 0c 01          	testb  $0x1,0xc(%esi)
40d4ad:	0f 84 2e 02 00 00    	je     0x40d6e1
40d4b3:	8b 4e 20             	mov    0x20(%esi),%ecx
40d4b6:	8d 45 cc             	lea    -0x34(%ebp),%eax
40d4b9:	50                   	push   %eax
40d4ba:	ba 04 01 00 00       	mov    $0x104,%edx
40d4bf:	89 7d cc             	mov    %edi,-0x34(%ebp)
40d4c2:	e8 ac b9 ff ff       	call   0x408e73
40d4c7:	85 c0                	test   %eax,%eax
40d4c9:	0f 88 04 02 00 00    	js     0x40d6d3
40d4cf:	83 7d cc 03          	cmpl   $0x3,-0x34(%ebp)
40d4d3:	0f 82 fa 01 00 00    	jb     0x40d6d3
40d4d9:	ff 76 20             	push   0x20(%esi)
40d4dc:	ff 15 44 b2 41 00    	call   *0x41b244
40d4e2:	8b cf                	mov    %edi,%ecx
40d4e4:	39 4d cc             	cmp    %ecx,-0x34(%ebp)
40d4e7:	76 18                	jbe    0x40d501
40d4e9:	8b 56 20             	mov    0x20(%esi),%edx
40d4ec:	0f b7 02             	movzwl (%edx),%eax
40d4ef:	83 c0 9f             	add    $0xffffff9f,%eax
40d4f2:	66 83 f8 19          	cmp    $0x19,%ax
40d4f6:	77 75                	ja     0x40d56d
40d4f8:	41                   	inc    %ecx
40d4f9:	83 c2 02             	add    $0x2,%edx
40d4fc:	3b 4d cc             	cmp    -0x34(%ebp),%ecx
40d4ff:	72 eb                	jb     0x40d4ec
40d501:	8b 4b 10             	mov    0x10(%ebx),%ecx
40d504:	33 c0                	xor    %eax,%eax
40d506:	40                   	inc    %eax
40d507:	89 45 cc             	mov    %eax,-0x34(%ebp)
40d50a:	3b c8                	cmp    %eax,%ecx
40d50c:	0f 8e 80 00 00 00    	jle    0x40d592
40d512:	8d 4d e0             	lea    -0x20(%ebp),%ecx
40d515:	89 7d 84             	mov    %edi,-0x7c(%ebp)
40d518:	89 4d 90             	mov    %ecx,-0x70(%ebp)
40d51b:	8d 8d 7c ff ff ff    	lea    -0x84(%ebp),%ecx
40d521:	51                   	push   %ecx
40d522:	50                   	push   %eax
40d523:	68 73 10 00 00       	push   $0x1073
40d528:	ff 75 c8             	push   -0x38(%ebp)
40d52b:	c7 45 94 0d 00 00 00 	movl   $0xd,-0x6c(%ebp)
40d532:	ff 15 d8 b1 41 00    	call   *0x41b1d8
40d538:	8b 46 20             	mov    0x20(%esi),%eax
40d53b:	85 c0                	test   %eax,%eax
40d53d:	75 05                	jne    0x40d544
40d53f:	b8 e0 3c 40 00       	mov    $0x403ce0,%eax
40d544:	8d 4d e0             	lea    -0x20(%ebp),%ecx
40d547:	66 8b 11             	mov    (%ecx),%dx
40d54a:	66 3b 10             	cmp    (%eax),%dx
40d54d:	75 28                	jne    0x40d577
40d54f:	66 85 d2             	test   %dx,%dx
40d552:	74 15                	je     0x40d569
40d554:	66 8b 51 02          	mov    0x2(%ecx),%dx
40d558:	66 3b 50 02          	cmp    0x2(%eax),%dx
40d55c:	75 19                	jne    0x40d577
40d55e:	83 c1 04             	add    $0x4,%ecx
40d561:	83 c0 04             	add    $0x4,%eax
40d564:	66 85 d2             	test   %dx,%dx
40d567:	75 de                	jne    0x40d547
40d569:	8b c7                	mov    %edi,%eax
40d56b:	eb 0f                	jmp    0x40d57c
40d56d:	6a 10                	push   $0x10
40d56f:	51                   	push   %ecx
40d570:	6a 3a                	push   $0x3a
40d572:	e9 61 01 00 00       	jmp    0x40d6d8
40d577:	1b c0                	sbb    %eax,%eax
40d579:	83 c8 01             	or     $0x1,%eax
40d57c:	85 c0                	test   %eax,%eax
40d57e:	0f 84 df 00 00 00    	je     0x40d663
40d584:	8b 45 cc             	mov    -0x34(%ebp),%eax
40d587:	8b 4b 10             	mov    0x10(%ebx),%ecx
40d58a:	40                   	inc    %eax
40d58b:	89 45 cc             	mov    %eax,-0x34(%ebp)
40d58e:	3b c1                	cmp    %ecx,%eax
40d590:	7c 80                	jl     0x40d512
40d592:	8b 46 10             	mov    0x10(%esi),%eax
40d595:	85 c0                	test   %eax,%eax
40d597:	0f 85 e6 00 00 00    	jne    0x40d683
40d59d:	8b 46 20             	mov    0x20(%esi),%eax
40d5a0:	8b 75 c8             	mov    -0x38(%ebp),%esi
40d5a3:	89 45 90             	mov    %eax,-0x70(%ebp)
40d5a6:	8d 85 7c ff ff ff    	lea    -0x84(%ebp),%eax
40d5ac:	50                   	push   %eax
40d5ad:	57                   	push   %edi
40d5ae:	68 4d 10 00 00       	push   $0x104d
40d5b3:	56                   	push   %esi
40d5b4:	c7 85 7c ff ff ff 01 	movl   $0x1,-0x84(%ebp)
40d5bb:	00 00 00
40d5be:	89 4d 80             	mov    %ecx,-0x80(%ebp)
40d5c1:	89 7d 84             	mov    %edi,-0x7c(%ebp)
40d5c4:	ff 15 d8 b1 41 00    	call   *0x41b1d8
40d5ca:	8d 85 40 ff ff ff    	lea    -0xc0(%ebp),%eax
40d5d0:	c7 85 50 ff ff ff 00 	movl   $0xf000,-0xb0(%ebp)
40d5d7:	f0 00 00
40d5da:	50                   	push   %eax
40d5db:	ff 73 10             	push   0x10(%ebx)
40d5de:	c7 85 4c ff ff ff 00 	movl   $0x2000,-0xb4(%ebp)
40d5e5:	20 00 00
40d5e8:	68 2b 10 00 00       	push   $0x102b
40d5ed:	56                   	push   %esi
40d5ee:	ff 15 d8 b1 41 00    	call   *0x41b1d8
40d5f4:	ff 43 10             	incl   0x10(%ebx)
40d5f7:	8d 45 d0             	lea    -0x30(%ebp),%eax
40d5fa:	50                   	push   %eax
40d5fb:	56                   	push   %esi
40d5fc:	ff 15 f8 b1 41 00    	call   *0x41b1f8
40d602:	8b 45 d8             	mov    -0x28(%ebp),%eax
40d605:	2b 45 d0             	sub    -0x30(%ebp),%eax
40d608:	89 45 b8             	mov    %eax,-0x48(%ebp)
40d60b:	8d 45 d0             	lea    -0x30(%ebp),%eax
40d60e:	50                   	push   %eax
40d60f:	56                   	push   %esi
40d610:	ff 15 28 b2 41 00    	call   *0x41b228
40d616:	8b 45 d8             	mov    -0x28(%ebp),%eax
40d619:	2b 45 d0             	sub    -0x30(%ebp),%eax
40d61c:	6a 02                	push   $0x2
40d61e:	89 45 bc             	mov    %eax,-0x44(%ebp)
40d621:	ff 15 fc b1 41 00    	call   *0x41b1fc
40d627:	8b f0                	mov    %eax,%esi
40d629:	e8 47 27 00 00       	call   0x40fd75
40d62e:	0f af c6             	imul   %esi,%eax
40d631:	6a 60                	push   $0x60
40d633:	59                   	pop    %ecx
40d634:	8b 75 c8             	mov    -0x38(%ebp),%esi
40d637:	57                   	push   %edi
40d638:	99                   	cltd
40d639:	f7 f9                	idiv   %ecx
40d63b:	57                   	push   %edi
40d63c:	68 28 10 00 00       	push   $0x1028
40d641:	56                   	push   %esi
40d642:	89 45 cc             	mov    %eax,-0x34(%ebp)
40d645:	ff 15 d8 b1 41 00    	call   *0x41b1d8
40d64b:	8b 55 b8             	mov    -0x48(%ebp),%edx
40d64e:	8b 4d bc             	mov    -0x44(%ebp),%ecx
40d651:	2b d1                	sub    %ecx,%edx
40d653:	3b 43 10             	cmp    0x10(%ebx),%eax
40d656:	8b 45 cc             	mov    -0x34(%ebp),%eax
40d659:	7d 0f                	jge    0x40d66a
40d65b:	3b d0                	cmp    %eax,%edx
40d65d:	7d 11                	jge    0x40d670
40d65f:	2b c8                	sub    %eax,%ecx
40d661:	eb 0d                	jmp    0x40d670
40d663:	6a 10                	push   $0x10
40d665:	51                   	push   %ecx
40d666:	6a 40                	push   $0x40
40d668:	eb 6e                	jmp    0x40d6d8
40d66a:	3b d0                	cmp    %eax,%edx
40d66c:	7e 02                	jle    0x40d670
40d66e:	03 c8                	add    %eax,%ecx
40d670:	0f b7 c1             	movzwl %cx,%eax
40d673:	50                   	push   %eax
40d674:	57                   	push   %edi
40d675:	68 1e 10 00 00       	push   $0x101e
40d67a:	56                   	push   %esi
40d67b:	ff 15 d8 b1 41 00    	call   *0x41b1d8
40d681:	eb 5e                	jmp    0x40d6e1
40d683:	8b 4e 20             	mov    0x20(%esi),%ecx
40d686:	85 c9                	test   %ecx,%ecx
40d688:	74 34                	je     0x40d6be
40d68a:	66 39 39             	cmp    %di,(%ecx)
40d68d:	74 2f                	je     0x40d6be
40d68f:	8d 8d 40 ff ff ff    	lea    -0xc0(%ebp),%ecx
40d695:	c7 85 50 ff ff ff 00 	movl   $0xf000,-0xb0(%ebp)
40d69c:	f0 00 00
40d69f:	51                   	push   %ecx
40d6a0:	50                   	push   %eax
40d6a1:	68 2b 10 00 00       	push   $0x102b
40d6a6:	ff 75 c8             	push   -0x38(%ebp)
40d6a9:	c7 85 4c ff ff ff 00 	movl   $0x2000,-0xb4(%ebp)
40d6b0:	20 00 00
40d6b3:	ff 15 d8 b1 41 00    	call   *0x41b1d8
40d6b9:	33 ff                	xor    %edi,%edi
40d6bb:	47                   	inc    %edi
40d6bc:	eb 23                	jmp    0x40d6e1
40d6be:	57                   	push   %edi
40d6bf:	50                   	push   %eax
40d6c0:	68 08 10 00 00       	push   $0x1008
40d6c5:	ff 75 c8             	push   -0x38(%ebp)
40d6c8:	ff 15 d8 b1 41 00    	call   *0x41b1d8
40d6ce:	ff 4b 10             	decl   0x10(%ebx)
40d6d1:	eb 0e                	jmp    0x40d6e1
40d6d3:	6a 10                	push   $0x10
40d6d5:	51                   	push   %ecx
40d6d6:	6a 3b                	push   $0x3b
40d6d8:	8b 4b 04             	mov    0x4(%ebx),%ecx
40d6db:	5a                   	pop    %edx
40d6dc:	e8 0a 27 00 00       	call   0x40fdeb
40d6e1:	8b 4d fc             	mov    -0x4(%ebp),%ecx
40d6e4:	8b c7                	mov    %edi,%eax
40d6e6:	5f                   	pop    %edi
40d6e7:	5e                   	pop    %esi
40d6e8:	33 cd                	xor    %ebp,%ecx
40d6ea:	5b                   	pop    %ebx
40d6eb:	e8 f0 61 00 00       	call   0x4138e0
40d6f0:	c9                   	leave
40d6f1:	c2 04 00             	ret    $0x4
40d6f4:	8b ff                	mov    %edi,%edi
40d6f6:	55                   	push   %ebp
40d6f7:	8b ec                	mov    %esp,%ebp
40d6f9:	83 ec 1c             	sub    $0x1c,%esp
40d6fc:	a1 18 51 41 00       	mov    0x415118,%eax
40d701:	33 c5                	xor    %ebp,%eax
40d703:	89 45 fc             	mov    %eax,-0x4(%ebp)
40d706:	53                   	push   %ebx
40d707:	56                   	push   %esi
40d708:	8b f1                	mov    %ecx,%esi
40d70a:	57                   	push   %edi
40d70b:	68 0e 04 00 00       	push   $0x40e
40d710:	89 75 e4             	mov    %esi,-0x1c(%ebp)
40d713:	ff 76 04             	push   0x4(%esi)
40d716:	ff 15 d0 b1 41 00    	call   *0x41b1d0
40d71c:	33 ff                	xor    %edi,%edi
40d71e:	8b d8                	mov    %eax,%ebx
40d720:	57                   	push   %edi
40d721:	57                   	push   %edi
40d722:	68 42 10 00 00       	push   $0x1042