40c23e:	5e                   	pop    %esi
40c23f:	5f                   	pop    %edi
40c240:	5b                   	pop    %ebx
40c241:	5d                   	pop    %ebp
40c242:	c2 08 00             	ret    $0x8
40c245:	8b 4d 0c             	mov    0xc(%ebp),%ecx
40c248:	e8 81 fa ff ff       	call   0x40bcce
40c24d:	eb f0                	jmp    0x40c23f
40c24f:	55                   	push   %ebp
40c250:	8b ec                	mov    %esp,%ebp
40c252:	53                   	push   %ebx
40c253:	56                   	push   %esi
40c254:	8b 75 10             	mov    0x10(%ebp),%esi
40c257:	57                   	push   %edi
40c258:	8b f9                	mov    %ecx,%edi
40c25a:	85 f6                	test   %esi,%esi
40c25c:	74 73                	je     0x40c2d1
40c25e:	83 fe ff             	cmp    $0xffffffff,%esi
40c261:	74 6e                	je     0x40c2d1
40c263:	8b 5d 08             	mov    0x8(%ebp),%ebx
40c266:	85 db                	test   %ebx,%ebx
40c268:	74 67                	je     0x40c2d1
40c26a:	8b 4f 0c             	mov    0xc(%edi),%ecx
40c26d:	8b 01                	mov    (%ecx),%eax
40c26f:	83 f8 01             	cmp    $0x1,%eax
40c272:	7f 2e                	jg     0x40c2a2
40c274:	56                   	push   %esi
40c275:	8b cf                	mov    %edi,%ecx
40c277:	e8 ed 00 00 00       	call   0x40c369
40c27c:	8b 45 0c             	mov    0xc(%ebp),%eax
40c27f:	89 77 04             	mov    %esi,0x4(%edi)
40c282:	03 f6                	add    %esi,%esi
40c284:	56                   	push   %esi
40c285:	8d 04 43             	lea    (%ebx,%eax,2),%eax
40c288:	50                   	push   %eax
40c289:	ff 37                	push   (%edi)
40c28b:	e8 f0 2b 01 00       	call   0x41ee80
40c290:	8b 07                	mov    (%edi),%eax
40c292:	83 c4 0c             	add    $0xc,%esp
40c295:	33 c9                	xor    %ecx,%ecx
40c297:	66 89 0c 06          	mov    %cx,(%esi,%eax,1)
40c29b:	5f                   	pop    %edi
40c29c:	5e                   	pop    %esi
40c29d:	5b                   	pop    %ebx
40c29e:	5d                   	pop    %ebp
40c29f:	c2 0c 00             	ret    $0xc
40c2a2:	48                   	dec    %eax
40c2a3:	89 01                	mov    %eax,(%ecx)
40c2a5:	8b cf                	mov    %edi,%ecx
40c2a7:	e8 9e a8 ff ff       	call   0x406b4a
40c2ac:	8d 46 01             	lea    0x1(%esi),%eax
40c2af:	50                   	push   %eax
40c2b0:	e8 41 a8 ff ff       	call   0x406af6
40c2b5:	33 c9                	xor    %ecx,%ecx
40c2b7:	6a 02                	push   $0x2
40c2b9:	5a                   	pop    %edx
40c2ba:	89 47 08             	mov    %eax,0x8(%edi)
40c2bd:	f7 e2                	mul    %edx
40c2bf:	0f 90 c1             	seto   %cl
40c2c2:	f7 d9                	neg    %ecx
40c2c4:	0b c8                	or     %eax,%ecx
40c2c6:	51                   	push   %ecx
40c2c7:	e8 1e 32 01 00       	call   0x41f4ea
40c2cc:	59                   	pop    %ecx
40c2cd:	89 07                	mov    %eax,(%edi)
40c2cf:	eb ab                	jmp    0x40c27c
40c2d1:	6a ff                	push   $0xffffffff
40c2d3:	6a 00                	push   $0x0
40c2d5:	e8 b1 ee ff ff       	call   0x40b18b
40c2da:	eb bf                	jmp    0x40c29b
40c2dc:	cc                   	int3
40c2dd:	cc                   	int3
40c2de:	cc                   	int3
40c2df:	cc                   	int3
40c2e0:	55                   	push   %ebp
40c2e1:	8b ec                	mov    %esp,%ebp
40c2e3:	53                   	push   %ebx
40c2e4:	56                   	push   %esi
40c2e5:	8b f1                	mov    %ecx,%esi
40c2e7:	57                   	push   %edi
40c2e8:	83 7e 08 00          	cmpl   $0x0,0x8(%esi)
40c2ec:	74 66                	je     0x40c354
40c2ee:	8b 5d 0c             	mov    0xc(%ebp),%ebx
40c2f1:	33 ff                	xor    %edi,%edi
40c2f3:	85 db                	test   %ebx,%ebx
40c2f5:	74 20                	je     0x40c317
40c2f7:	8b 46 0c             	mov    0xc(%esi),%eax
40c2fa:	3b 46 08             	cmp    0x8(%esi),%eax
40c2fd:	74 28                	je     0x40c327
40c2ff:	8b 4e 04             	mov    0x4(%esi),%ecx
40c302:	8b 46 0c             	mov    0xc(%esi),%eax
40c305:	47                   	inc    %edi
40c306:	8a 04 01             	mov    (%ecx,%eax,1),%al
40c309:	8b 4d 08             	mov    0x8(%ebp),%ecx
40c30c:	88 44 0f ff          	mov    %al,-0x1(%edi,%ecx,1)
40c310:	ff 46 0c             	incl   0xc(%esi)
40c313:	3b fb                	cmp    %ebx,%edi
40c315:	72 e0                	jb     0x40c2f7
40c317:	01 7e 10             	add    %edi,0x10(%esi)
40c31a:	8b c7                	mov    %edi,%eax
40c31c:	5f                   	pop    %edi
40c31d:	83 56 14 00          	adcl   $0x0,0x14(%esi)
40c321:	5e                   	pop    %esi
40c322:	5b                   	pop    %ebx
40c323:	5d                   	pop    %ebp
40c324:	c2 08 00             	ret    $0x8
40c327:	6a 00                	push   $0x0
40c329:	8d 45 0c             	lea    0xc(%ebp),%eax
40c32c:	50                   	push   %eax
40c32d:	68 00 00 01 00       	push   $0x10000
40c332:	ff 76 04             	push   0x4(%esi)
40c335:	ff 36                	push   (%esi)
40c337:	ff 15 cc d1 48 00    	call   *0x48d1cc
40c33d:	85 c0                	test   %eax,%eax
40c33f:	74 d6                	je     0x40c317
40c341:	8b 45 0c             	mov    0xc(%ebp),%eax
40c344:	85 c0                	test   %eax,%eax
40c346:	74 cf                	je     0x40c317
40c348:	89 46 08             	mov    %eax,0x8(%esi)
40c34b:	c7 46 0c 00 00 00 00 	movl   $0x0,0xc(%esi)
40c352:	eb ab                	jmp    0x40c2ff
40c354:	c7 46 08 00 00 00 00 	movl   $0x0,0x8(%esi)
40c35b:	c7 46 0c 00 00 00 00 	movl   $0x0,0xc(%esi)
40c362:	e8 3f 82 ff ff       	call   0x4045a6
40c367:	eb 85                	jmp    0x40c2ee
40c369:	55                   	push   %ebp
40c36a:	8b ec                	mov    %esp,%ebp
40c36c:	56                   	push   %esi
40c36d:	57                   	push   %edi
40c36e:	8b 7d 08             	mov    0x8(%ebp),%edi
40c371:	8b f1                	mov    %ecx,%esi
40c373:	8d 47 01             	lea    0x1(%edi),%eax
40c376:	39 46 08             	cmp    %eax,0x8(%esi)
40c379:	72 06                	jb     0x40c381
40c37b:	5f                   	pop    %edi
40c37c:	5e                   	pop    %esi
40c37d:	5d                   	pop    %ebp
40c37e:	c2 04 00             	ret    $0x4
40c381:	50                   	push   %eax
40c382:	e8 6f a7 ff ff       	call   0x406af6
40c387:	83 3e 00             	cmpl   $0x0,(%esi)
40c38a:	89 46 08             	mov    %eax,0x8(%esi)
40c38d:	74 08                	je     0x40c397
40c38f:	ff 36                	push   (%esi)
40c391:	e8 c8 31 01 00       	call   0x41f55e
40c396:	59                   	pop    %ecx
40c397:	8b 46 08             	mov    0x8(%esi),%eax
40c39a:	33 c9                	xor    %ecx,%ecx
40c39c:	6a 02                	push   $0x2
40c39e:	5a                   	pop    %edx
40c39f:	f7 e2                	mul    %edx
40c3a1:	0f 90 c1             	seto   %cl
40c3a4:	f7 d9                	neg    %ecx
40c3a6:	0b c8                	or     %eax,%ecx
40c3a8:	51                   	push   %ecx
40c3a9:	e8 3c 31 01 00       	call   0x41f4ea
40c3ae:	59                   	pop    %ecx
40c3af:	33 c9                	xor    %ecx,%ecx
40c3b1:	89 06                	mov    %eax,(%esi)
40c3b3:	66 89 0c 78          	mov    %cx,(%eax,%edi,2)
40c3b7:	eb c2                	jmp    0x40c37b
40c3b9:	55                   	push   %ebp
40c3ba:	8b ec                	mov    %esp,%ebp
40c3bc:	51                   	push   %ecx
40c3bd:	51                   	push   %ecx
40c3be:	8b 45 08             	mov    0x8(%ebp),%eax
40c3c1:	56                   	push   %esi
40c3c2:	8b f1                	mov    %ecx,%esi
40c3c4:	40                   	inc    %eax
40c3c5:	39 46 08             	cmp    %eax,0x8(%esi)
40c3c8:	72 05                	jb     0x40c3cf
40c3ca:	5e                   	pop    %esi
40c3cb:	c9                   	leave
40c3cc:	c2 04 00             	ret    $0x4
40c3cf:	3d c2 41 00 00       	cmp    $0x41c2,%eax
40c3d4:	0f 83 8d 7a 06 00    	jae    0x473e67
40c3da:	03 c0                	add    %eax,%eax
40c3dc:	57                   	push   %edi
40c3dd:	50                   	push   %eax
40c3de:	89 46 08             	mov    %eax,0x8(%esi)
40c3e1:	e8 84 23 01 00       	call   0x41e76a
40c3e6:	50                   	push   %eax
40c3e7:	89 46 08             	mov    %eax,0x8(%esi)
40c3ea:	e8 fb 30 01 00       	call   0x41f4ea
40c3ef:	83 3e 00             	cmpl   $0x0,(%esi)
40c3f2:	59                   	pop    %ecx
40c3f3:	8b f8                	mov    %eax,%edi
40c3f5:	74 17                	je     0x40c40e
40c3f7:	8b 4e 04             	mov    0x4(%esi),%ecx
40c3fa:	41                   	inc    %ecx
40c3fb:	51                   	push   %ecx
40c3fc:	ff 36                	push   (%esi)
40c3fe:	57                   	push   %edi
40c3ff:	e8 7c 2a 01 00       	call   0x41ee80
40c404:	ff 36                	push   (%esi)
40c406:	e8 53 31 01 00       	call   0x41f55e
40c40b:	83 c4 10             	add    $0x10,%esp
40c40e:	89 3e                	mov    %edi,(%esi)
40c410:	5f                   	pop    %edi
40c411:	eb b7                	jmp    0x40c3ca
40c413:	55                   	push   %ebp
40c414:	8b ec                	mov    %esp,%ebp
40c416:	51                   	push   %ecx
40c417:	51                   	push   %ecx
40c418:	53                   	push   %ebx
40c419:	56                   	push   %esi
40c41a:	57                   	push   %edi
40c41b:	8b 7d 14             	mov    0x14(%ebp),%edi
40c41e:	8b cf                	mov    %edi,%ecx
40c420:	e8 a9 f8 ff ff       	call   0x40bcce
40c425:	8b 75 0c             	mov    0xc(%ebp),%esi
40c428:	8b 55 08             	mov    0x8(%ebp),%edx
40c42b:	8b 0e                	mov    (%esi),%ecx
40c42d:	6a 30                	push   $0x30
40c42f:	58                   	pop    %eax
40c430:	89 4d 0c             	mov    %ecx,0xc(%ebp)
40c433:	89 45 fc             	mov    %eax,-0x4(%ebp)
40c436:	66 39 04 4a          	cmp    %ax,(%edx,%ecx,2)
40c43a:	0f 84 f3 00 00 00    	je     0x40c533
40c440:	6a 17                	push   $0x17
40c442:	c6 45 17 00          	movb   $0x0,0x17(%ebp)
40c446:	5b                   	pop    %ebx
40c447:	8b 06                	mov    (%esi),%eax
40c449:	0f b7 04 42          	movzwl (%edx,%eax,2),%eax
40c44d:	89 45 fc             	mov    %eax,-0x4(%ebp)
40c450:	0f b7 c0             	movzwl %ax,%eax
40c453:	83 f8 2e             	cmp    $0x2e,%eax
40c456:	0f 84 22 01 00 00    	je     0x40c57e
40c45c:	83 f8 2b             	cmp    $0x2b,%eax
40c45f:	0f 84 87 75 06 00    	je     0x4739ec
40c465:	83 f8 2d             	cmp    $0x2d,%eax
40c468:	0f 84 7e 75 06 00    	je     0x4739ec
40c46e:	83 f8 2f             	cmp    $0x2f,%eax
40c471:	7e 41                	jle    0x40c4b4
40c473:	83 f8 39             	cmp    $0x39,%eax
40c476:	7f 2a                	jg     0x40c4a2
40c478:	83 e3 ef             	and    $0xffffffef,%ebx
40c47b:	83 cb 20             	or     $0x20,%ebx
40c47e:	8a 45 17             	mov    0x17(%ebp),%al
40c481:	f6 c3 20             	test   $0x20,%bl
40c484:	74 4f                	je     0x40c4d5
40c486:	8b 06                	mov    (%esi),%eax
40c488:	0f b7 0c 42          	movzwl (%edx,%eax,2),%ecx
40c48c:	40                   	inc    %eax
40c48d:	51                   	push   %ecx
40c48e:	8b cf                	mov    %edi,%ecx
40c490:	89 06                	mov    %eax,(%esi)
40c492:	e8 02 03 00 00       	call   0x40c799
40c497:	8b 4d 0c             	mov    0xc(%ebp),%ecx
40c49a:	8b 55 08             	mov    0x8(%ebp),%edx
40c49d:	83 e3 df             	and    $0xffffffdf,%ebx
40c4a0:	eb a5                	jmp    0x40c447
40c4a2:	83 f8 45             	cmp    $0x45,%eax
40c4a5:	0f 84 57 01 00 00    	je     0x40c602
40c4ab:	83 f8 65             	cmp    $0x65,%eax
40c4ae:	0f 84 4e 01 00 00    	je     0x40c602
40c4b4:	83 e0 df             	and    $0xffffffdf,%eax
40c4b7:	83 f8 41             	cmp    $0x41,%eax
40c4ba:	7d 70                	jge    0x40c52c
40c4bc:	66 83 7d fc 5f       	cmpw   $0x5f,-0x4(%ebp)
40c4c1:	75 bb                	jne    0x40c47e
40c4c3:	8a 45 17             	mov    0x17(%ebp),%al
40c4c6:	f7 c3 fd ff ff ff    	test   $0xfffffffd,%ebx
40c4cc:	74 b3                	je     0x40c481
40c4ce:	83 cb 10             	or     $0x10,%ebx
40c4d1:	89 0e                	mov    %ecx,(%esi)
40c4d3:	eb ac                	jmp    0x40c481
40c4d5:	f6 c3 10             	test   $0x10,%bl
40c4d8:	0f 85 40 01 00 00    	jne    0x40c61e
40c4de:	84 c0                	test   %al,%al
40c4e0:	0f 85 f1 00 00 00    	jne    0x40c5d7
40c4e6:	ff 37                	push   (%edi)
40c4e8:	e8 3d 51 01 00       	call   0x42162a
40c4ed:	59                   	pop    %ecx
40c4ee:	33 c9                	xor    %ecx,%ecx
40c4f0:	66 83 7d 18 4a       	cmpw   $0x4a,0x18(%ebp)
40c4f5:	8b f8                	mov    %eax,%edi
40c4f7:	8b da                	mov    %edx,%ebx
40c4f9:	b8 ff ff ff 7f       	mov    $0x7fffffff,%eax
40c4fe:	74 77                	je     0x40c577
40c500:	3b d9                	cmp    %ecx,%ebx
40c502:	0f 8f 1d 01 00 00    	jg     0x40c625
40c508:	7c 08                	jl     0x40c512
40c50a:	3b f8                	cmp    %eax,%edi
40c50c:	0f 87 13 01 00 00    	ja     0x40c625
40c512:	6a 05                	push   $0x5
40c514:	8b 75 10             	mov    0x10(%ebp),%esi
40c517:	8b ce                	mov    %esi,%ecx
40c519:	e8 de f6 ff ff       	call   0x40bbfc
40c51e:	89 3e                	mov    %edi,(%esi)
40c520:	89 5e 04             	mov    %ebx,0x4(%esi)
40c523:	b0 01                	mov    $0x1,%al
40c525:	5f                   	pop    %edi
40c526:	5e                   	pop    %esi
40c527:	5b                   	pop    %ebx
40c528:	c9                   	leave
40c529:	c2 14 00             	ret    $0x14
40c52c:	83 f8 5a             	cmp    $0x5a,%eax
40c52f:	7f 8b                	jg     0x40c4bc
40c531:	eb 90                	jmp    0x40c4c3
40c533:	0f b7 44 4a 02       	movzwl 0x2(%edx,%ecx,2),%eax
40c538:	83 f8 78             	cmp    $0x78,%eax
40c53b:	74 09                	je     0x40c546
40c53d:	83 f8 58             	cmp    $0x58,%eax
40c540:	0f 85 fa fe ff ff    	jne    0x40c440
40c546:	8b 5d 14             	mov    0x14(%ebp),%ebx
40c549:	8d 41 02             	lea    0x2(%ecx),%eax
40c54c:	89 06                	mov    %eax,(%esi)
40c54e:	33 ff                	xor    %edi,%edi
40c550:	8b 16                	mov    (%esi),%edx
40c552:	8b 45 08             	mov    0x8(%ebp),%eax
40c555:	6a 39                	push   $0x39
40c557:	0f b7 04 50          	movzwl (%eax,%edx,2),%eax
40c55b:	59                   	pop    %ecx
40c55c:	66 3b 45 fc          	cmp    -0x4(%ebp),%ax
40c560:	72 2e                	jb     0x40c590
40c562:	66 3b c1             	cmp    %cx,%ax
40c565:	77 29                	ja     0x40c590
40c567:	50                   	push   %eax
40c568:	8d 42 01             	lea    0x1(%edx),%eax
40c56b:	8b cb                	mov    %ebx,%ecx
40c56d:	89 06                	mov    %eax,(%esi)
40c56f:	e8 25 02 00 00       	call   0x40c799
40c574:	47                   	inc    %edi
40c575:	eb d9                	jmp    0x40c550
40c577:	b8 00 00 00 80       	mov    $0x80000000,%eax
40c57c:	eb 82                	jmp    0x40c500
40c57e:	f6 c3 02             	test   $0x2,%bl
40c581:	74 03                	je     0x40c586
40c583:	6a 25                	push   $0x25
40c585:	5b                   	pop    %ebx
40c586:	b0 01                	mov    $0x1,%al
40c588:	88 45 17             	mov    %al,0x17(%ebp)
40c58b:	e9 f1 fe ff ff       	jmp    0x40c481
40c590:	83 f8 61             	cmp    $0x61,%eax
40c593:	0f 83 37 74 06 00    	jae    0x4739d0
40c599:	6a 41                	push   $0x41
40c59b:	59                   	pop    %ecx
40c59c:	66 3b c1             	cmp    %cx,%ax
40c59f:	0f 83 39 74 06 00    	jae    0x4739de
40c5a5:	8b 0b                	mov    (%ebx),%ecx
40c5a7:	6a 10                	push   $0x10
40c5a9:	8d 55 f8             	lea    -0x8(%ebp),%edx
40c5ac:	e8 a0 fe 00 00       	call   0x41c451
40c5b1:	59                   	pop    %ecx
40c5b2:	84 c0                	test   %al,%al
40c5b4:	74 68                	je     0x40c61e
40c5b6:	8b 75 10             	mov    0x10(%ebp),%esi
40c5b9:	8b ce                	mov    %esi,%ecx
40c5bb:	83 ff 08             	cmp    $0x8,%edi