7c9381:	5f                   	pop    %edi
7c9382:	5e                   	pop    %esi
7c9383:	5b                   	pop    %ebx
7c9384:	8b 4c 24 5c          	mov    0x5c(%esp),%ecx
7c9388:	33 cc                	xor    %esp,%ecx
7c938a:	e8 27 24 c5 ff       	call   0x41b7b6
7c938f:	83 c4 60             	add    $0x60,%esp
7c9392:	c3                   	ret
7c9393:	80 7c 24 41 01       	cmpb   $0x1,0x41(%esp)
7c9398:	55                   	push   %ebp
7c9399:	8b ac 24 84 00 00 00 	mov    0x84(%esp),%ebp
7c93a0:	74 19                	je     0x7c93bb
7c93a2:	80 7c 24 44 03       	cmpb   $0x3,0x44(%esp)
7c93a7:	74 12                	je     0x7c93bb
7c93a9:	85 ed                	test   %ebp,%ebp
7c93ab:	75 0e                	jne    0x7c93bb
7c93ad:	8b 43 18             	mov    0x18(%ebx),%eax
7c93b0:	68 2c be c2 00       	push   $0xc2be2c
7c93b5:	56                   	push   %esi
7c93b6:	ff d0                	call   *%eax
7c93b8:	83 c4 08             	add    $0x8,%esp
7c93bb:	0f b6 4c 24 4b       	movzbl 0x4b(%esp),%ecx
7c93c0:	0f b6 44 24 4a       	movzbl 0x4a(%esp),%eax
7c93c5:	c1 e1 08             	shl    $0x8,%ecx
7c93c8:	0b c8                	or     %eax,%ecx
7c93ca:	89 4f 38             	mov    %ecx,0x38(%edi)
7c93cd:	f6 c1 04             	test   $0x4,%cl
7c93d0:	0f 84 8c 00 00 00    	je     0x7c9462
7c93d6:	6a 04                	push   $0x4
7c93d8:	8d 44 24 30          	lea    0x30(%esp),%eax
7c93dc:	50                   	push   %eax
7c93dd:	8b 43 08             	mov    0x8(%ebx),%eax
7c93e0:	56                   	push   %esi
7c93e1:	ff d0                	call   *%eax
7c93e3:	83 c4 0c             	add    $0xc,%esp
7c93e6:	83 f8 04             	cmp    $0x4,%eax
7c93e9:	0f 85 0a 04 00 00    	jne    0x7c97f9
7c93ef:	0f b6 4c 24 2d       	movzbl 0x2d(%esp),%ecx
7c93f4:	0f b6 44 24 2c       	movzbl 0x2c(%esp),%eax
7c93f9:	66 c1 e1 08          	shl    $0x8,%cx
7c93fd:	66 0b c8             	or     %ax,%cx
7c9400:	0f b6 44 24 2e       	movzbl 0x2e(%esp),%eax
7c9405:	89 44 24 1c          	mov    %eax,0x1c(%esp)
7c9409:	0f b6 44 24 2f       	movzbl 0x2f(%esp),%eax
7c940e:	89 47 40             	mov    %eax,0x40(%edi)
7c9411:	b8 60 ea 00 00       	mov    $0xea60,%eax
7c9416:	66 89 4f 34          	mov    %cx,0x34(%edi)
7c941a:	66 3b c8             	cmp    %ax,%cx
7c941d:	76 12                	jbe    0x7c9431
7c941f:	85 ed                	test   %ebp,%ebp
7c9421:	75 0e                	jne    0x7c9431
7c9423:	8b 43 18             	mov    0x18(%ebx),%eax
7c9426:	68 58 be c2 00       	push   $0xc2be58
7c942b:	56                   	push   %esi
7c942c:	ff d0                	call   *%eax
7c942e:	83 c4 08             	add    $0x8,%esp
7c9431:	0f b7 47 34          	movzwl 0x34(%edi),%eax
7c9435:	66 85 c0             	test   %ax,%ax
7c9438:	74 35                	je     0x7c946f
7c943a:	6a 01                	push   $0x1
7c943c:	50                   	push   %eax
7c943d:	8b 43 10             	mov    0x10(%ebx),%eax
7c9440:	56                   	push   %esi
7c9441:	ff d0                	call   *%eax
7c9443:	83 c4 0c             	add    $0xc,%esp
7c9446:	85 c0                	test   %eax,%eax
7c9448:	74 25                	je     0x7c946f
7c944a:	5d                   	pop    %ebp
7c944b:	5f                   	pop    %edi
7c944c:	5e                   	pop    %esi
7c944d:	b8 05 00 00 00       	mov    $0x5,%eax
7c9452:	5b                   	pop    %ebx
7c9453:	8b 4c 24 5c          	mov    0x5c(%esp),%ecx
7c9457:	33 cc                	xor    %esp,%ecx
7c9459:	e8 58 23 c5 ff       	call   0x41b7b6
7c945e:	83 c4 60             	add    $0x60,%esp
7c9461:	c3                   	ret
7c9462:	33 c0                	xor    %eax,%eax
7c9464:	66 89 47 34          	mov    %ax,0x34(%edi)
7c9468:	89 44 24 1c          	mov    %eax,0x1c(%esp)
7c946c:	89 47 40             	mov    %eax,0x40(%edi)
7c946f:	f6 47 38 01          	testb  $0x1,0x38(%edi)
7c9473:	74 3c                	je     0x7c94b1
7c9475:	8d 44 24 10          	lea    0x10(%esp),%eax
7c9479:	50                   	push   %eax
7c947a:	56                   	push   %esi
7c947b:	53                   	push   %ebx
7c947c:	e8 4f 05 00 00       	call   0x7c99d0
7c9481:	89 47 18             	mov    %eax,0x18(%edi)
7c9484:	83 c4 0c             	add    $0xc,%esp
7c9487:	8b 44 24 10          	mov    0x10(%esp),%eax
7c948b:	85 c0                	test   %eax,%eax
7c948d:	0f 85 80 03 00 00    	jne    0x7c9813
7c9493:	8d 44 24 10          	lea    0x10(%esp),%eax
7c9497:	50                   	push   %eax
7c9498:	56                   	push   %esi
7c9499:	53                   	push   %ebx
7c949a:	e8 31 05 00 00       	call   0x7c99d0
7c949f:	89 47 20             	mov    %eax,0x20(%edi)
7c94a2:	83 c4 0c             	add    $0xc,%esp
7c94a5:	8b 44 24 10          	mov    0x10(%esp),%eax
7c94a9:	85 c0                	test   %eax,%eax
7c94ab:	0f 85 62 03 00 00    	jne    0x7c9813
7c94b1:	f6 47 38 02          	testb  $0x2,0x38(%edi)
7c94b5:	74 3c                	je     0x7c94f3
7c94b7:	8d 44 24 10          	lea    0x10(%esp),%eax
7c94bb:	50                   	push   %eax
7c94bc:	56                   	push   %esi
7c94bd:	53                   	push   %ebx
7c94be:	e8 0d 05 00 00       	call   0x7c99d0
7c94c3:	89 47 1c             	mov    %eax,0x1c(%edi)
7c94c6:	83 c4 0c             	add    $0xc,%esp
7c94c9:	8b 44 24 10          	mov    0x10(%esp),%eax
7c94cd:	85 c0                	test   %eax,%eax
7c94cf:	0f 85 3e 03 00 00    	jne    0x7c9813
7c94d5:	8d 44 24 10          	lea    0x10(%esp),%eax
7c94d9:	50                   	push   %eax
7c94da:	56                   	push   %esi
7c94db:	53                   	push   %ebx
7c94dc:	e8 ef 04 00 00       	call   0x7c99d0
7c94e1:	89 47 24             	mov    %eax,0x24(%edi)
7c94e4:	83 c4 0c             	add    $0xc,%esp
7c94e7:	8b 44 24 10          	mov    0x10(%esp),%eax
7c94eb:	85 c0                	test   %eax,%eax
7c94ed:	0f 85 20 03 00 00    	jne    0x7c9813
7c94f3:	33 ed                	xor    %ebp,%ebp
7c94f5:	39 6c 24 14          	cmp    %ebp,0x14(%esp)
7c94f9:	0f 86 dc 00 00 00    	jbe    0x7c95db
7c94ff:	90                   	nop
7c9500:	6a 08                	push   $0x8
7c9502:	8d 44 24 30          	lea    0x30(%esp),%eax
7c9506:	50                   	push   %eax
7c9507:	8b 43 08             	mov    0x8(%ebx),%eax
7c950a:	56                   	push   %esi
7c950b:	ff d0                	call   *%eax
7c950d:	83 c4 0c             	add    $0xc,%esp
7c9510:	83 f8 08             	cmp    $0x8,%eax
7c9513:	0f 85 e0 02 00 00    	jne    0x7c97f9
7c9519:	8b 44 24 1c          	mov    0x1c(%esp),%eax
7c951d:	85 c0                	test   %eax,%eax
7c951f:	74 14                	je     0x7c9535
7c9521:	6a 01                	push   $0x1
7c9523:	50                   	push   %eax
7c9524:	8b 43 10             	mov    0x10(%ebx),%eax
7c9527:	56                   	push   %esi
7c9528:	ff d0                	call   *%eax
7c952a:	83 c4 0c             	add    $0xc,%esp
7c952d:	85 c0                	test   %eax,%eax
7c952f:	0f 85 15 ff ff ff    	jne    0x7c944a
7c9535:	8b 43 1c             	mov    0x1c(%ebx),%eax
7c9538:	6a 20                	push   $0x20
7c953a:	53                   	push   %ebx
7c953b:	ff d0                	call   *%eax
7c953d:	8b f0                	mov    %eax,%esi
7c953f:	83 c4 08             	add    $0x8,%esp
7c9542:	85 f6                	test   %esi,%esi
7c9544:	0f 84 97 02 00 00    	je     0x7c97e1
7c954a:	c7 06 00 00 00 00    	movl   $0x0,(%esi)
7c9550:	0f b6 54 24 33       	movzbl 0x33(%esp),%edx
7c9555:	0f b6 4c 24 32       	movzbl 0x32(%esp),%ecx
7c955a:	c1 e2 08             	shl    $0x8,%edx
7c955d:	0b d1                	or     %ecx,%edx
7c955f:	89 56 04             	mov    %edx,0x4(%esi)
7c9562:	0f b6 4c 24 31       	movzbl 0x31(%esp),%ecx
7c9567:	0f b6 44 24 30       	movzbl 0x30(%esp),%eax
7c956c:	c1 e1 08             	shl    $0x8,%ecx
7c956f:	0b c8                	or     %eax,%ecx
7c9571:	c7 46 0c 00 00 00 00 	movl   $0x0,0xc(%esi)
7c9578:	89 4e 08             	mov    %ecx,0x8(%esi)
7c957b:	89 7e 10             	mov    %edi,0x10(%esi)
7c957e:	0f b6 4c 24 2f       	movzbl 0x2f(%esp),%ecx
7c9583:	0f b6 44 24 2e       	movzbl 0x2e(%esp),%eax
7c9588:	c1 e1 08             	shl    $0x8,%ecx
7c958b:	0b c8                	or     %eax,%ecx
7c958d:	0f b6 44 24 2d       	movzbl 0x2d(%esp),%eax
7c9592:	c1 e1 08             	shl    $0x8,%ecx
7c9595:	0b c8                	or     %eax,%ecx
7c9597:	0f b6 44 24 2c       	movzbl 0x2c(%esp),%eax
7c959c:	c1 e1 08             	shl    $0x8,%ecx
7c959f:	0b c8                	or     %eax,%ecx
7c95a1:	c7 46 18 00 00 00 00 	movl   $0x0,0x18(%esi)
7c95a8:	03 8c 24 80 00 00 00 	add    0x80(%esp),%ecx
7c95af:	8b 44 24 20          	mov    0x20(%esp),%eax
7c95b3:	89 4e 14             	mov    %ecx,0x14(%esi)
7c95b6:	c7 46 1c 00 00 00 00 	movl   $0x0,0x1c(%esi)
7c95bd:	85 c0                	test   %eax,%eax
7c95bf:	75 05                	jne    0x7c95c6
7c95c1:	89 77 2c             	mov    %esi,0x2c(%edi)
7c95c4:	eb 02                	jmp    0x7c95c8
7c95c6:	89 30                	mov    %esi,(%eax)
7c95c8:	45                   	inc    %ebp
7c95c9:	89 74 24 20          	mov    %esi,0x20(%esp)
7c95cd:	8b 74 24 18          	mov    0x18(%esp),%esi
7c95d1:	3b 6c 24 14          	cmp    0x14(%esp),%ebp
7c95d5:	0f 8c 25 ff ff ff    	jl     0x7c9500
7c95db:	83 7c 24 28 00       	cmpl   $0x0,0x28(%esp)
7c95e0:	c7 44 24 14 00 00 00 	movl   $0x0,0x14(%esp)
7c95e7:	00
7c95e8:	0f 86 23 02 00 00    	jbe    0x7c9811
7c95ee:	66 90                	xchg   %ax,%ax
7c95f0:	6a 10                	push   $0x10
7c95f2:	8d 44 24 30          	lea    0x30(%esp),%eax
7c95f6:	50                   	push   %eax
7c95f7:	8b 43 08             	mov    0x8(%ebx),%eax
7c95fa:	56                   	push   %esi
7c95fb:	ff d0                	call   *%eax
7c95fd:	83 c4 0c             	add    $0xc,%esp
7c9600:	83 f8 10             	cmp    $0x10,%eax
7c9603:	0f 85 f0 01 00 00    	jne    0x7c97f9
7c9609:	8b 43 1c             	mov    0x1c(%ebx),%eax
7c960c:	6a 24                	push   $0x24
7c960e:	53                   	push   %ebx
7c960f:	ff d0                	call   *%eax
7c9611:	8b f0                	mov    %eax,%esi
7c9613:	83 c4 08             	add    $0x8,%esp
7c9616:	85 f6                	test   %esi,%esi
7c9618:	0f 84 c3 01 00 00    	je     0x7c97e1
7c961e:	c7 06 00 00 00 00    	movl   $0x0,(%esi)
7c9624:	0f b6 54 24 2f       	movzbl 0x2f(%esp),%edx
7c9629:	0f b6 4c 24 2e       	movzbl 0x2e(%esp),%ecx
7c962e:	0f b6 44 24 2d       	movzbl 0x2d(%esp),%eax
7c9633:	c1 e2 08             	shl    $0x8,%edx
7c9636:	0b d1                	or     %ecx,%edx
7c9638:	c1 e2 08             	shl    $0x8,%edx
7c963b:	0b d0                	or     %eax,%edx
7c963d:	0f b6 44 24 2c       	movzbl 0x2c(%esp),%eax
7c9642:	c1 e2 08             	shl    $0x8,%edx
7c9645:	0b d0                	or     %eax,%edx
7c9647:	89 56 08             	mov    %edx,0x8(%esi)
7c964a:	0f b6 4c 24 3b       	movzbl 0x3b(%esp),%ecx
7c964f:	0f b6 44 24 3a       	movzbl 0x3a(%esp),%eax
7c9654:	c1 e1 08             	shl    $0x8,%ecx
7c9657:	0b c8                	or     %eax,%ecx
7c9659:	89 4e 0c             	mov    %ecx,0xc(%esi)
7c965c:	0f b6 4c 24 33       	movzbl 0x33(%esp),%ecx
7c9661:	0f b6 44 24 32       	movzbl 0x32(%esp),%eax
7c9666:	c1 e1 08             	shl    $0x8,%ecx
7c9669:	0b c8                	or     %eax,%ecx
7c966b:	0f b6 44 24 31       	movzbl 0x31(%esp),%eax
7c9670:	c1 e1 08             	shl    $0x8,%ecx
7c9673:	0b c8                	or     %eax,%ecx
7c9675:	0f b6 44 24 30       	movzbl 0x30(%esp),%eax
7c967a:	c1 e1 08             	shl    $0x8,%ecx
7c967d:	0b c8                	or     %eax,%ecx
7c967f:	89 4e 20             	mov    %ecx,0x20(%esi)
7c9682:	0f b6 4c 24 35       	movzbl 0x35(%esp),%ecx
7c9687:	0f b6 44 24 34       	movzbl 0x34(%esp),%eax
7c968c:	c1 e1 08             	shl    $0x8,%ecx
7c968f:	0b c8                	or     %eax,%ecx
7c9691:	81 f9 fd ff 00 00    	cmp    $0xfffd,%ecx
7c9697:	7d 3a                	jge    0x7c96d3
7c9699:	8b 47 2c             	mov    0x2c(%edi),%eax
7c969c:	85 c9                	test   %ecx,%ecx
7c969e:	74 0b                	je     0x7c96ab
7c96a0:	49                   	dec    %ecx
7c96a1:	85 c0                	test   %eax,%eax
7c96a3:	74 02                	je     0x7c96a7
7c96a5:	8b 00                	mov    (%eax),%eax
7c96a7:	85 c9                	test   %ecx,%ecx
7c96a9:	75 f5                	jne    0x7c96a0
7c96ab:	89 46 1c             	mov    %eax,0x1c(%esi)
7c96ae:	85 c0                	test   %eax,%eax
7c96b0:	75 70                	jne    0x7c9722
7c96b2:	8b 43 20             	mov    0x20(%ebx),%eax
7c96b5:	56                   	push   %esi
7c96b6:	ff d0                	call   *%eax
7c96b8:	83 c4 04             	add    $0x4,%esp
7c96bb:	b8 08 00 00 00       	mov    $0x8,%eax
7c96c0:	5d                   	pop    %ebp
7c96c1:	5f                   	pop    %edi
7c96c2:	5e                   	pop    %esi
7c96c3:	5b                   	pop    %ebx
7c96c4:	8b 4c 24 5c          	mov    0x5c(%esp),%ecx
7c96c8:	33 cc                	xor    %esp,%ecx
7c96ca:	e8 e7 20 c5 ff       	call   0x41b7b6
7c96cf:	83 c4 60             	add    $0x60,%esp
7c96d2:	c3                   	ret
7c96d3:	81 f9 fe ff 00 00    	cmp    $0xfffe,%ecx
7c96d9:	74 08                	je     0x7c96e3
7c96db:	81 f9 ff ff 00 00    	cmp    $0xffff,%ecx
7c96e1:	75 20                	jne    0x7c9703
7c96e3:	8b 47 2c             	mov    0x2c(%edi),%eax
7c96e6:	83 38 00             	cmpl   $0x0,(%eax)
7c96e9:	74 0c                	je     0x7c96f7
7c96eb:	0f 1f 44 00 00       	nopl   0x0(%eax,%eax,1)
7c96f0:	8b 00                	mov    (%eax),%eax
7c96f2:	83 38 00             	cmpl   $0x0,(%eax)
7c96f5:	75 f9                	jne    0x7c96f0
7c96f7:	89 46 1c             	mov    %eax,0x1c(%esi)
7c96fa:	83 78 1c 00          	cmpl   $0x0,0x1c(%eax)
7c96fe:	75 03                	jne    0x7c9703
7c9700:	89 70 1c             	mov    %esi,0x1c(%eax)
7c9703:	81 f9 fd ff 00 00    	cmp    $0xfffd,%ecx
7c9709:	74 08                	je     0x7c9713
7c970b:	81 f9 ff ff 00 00    	cmp    $0xffff,%ecx
7c9711:	75 0f                	jne    0x7c9722
7c9713:	8b 47 2c             	mov    0x2c(%edi),%eax
7c9716:	89 46 1c             	mov    %eax,0x1c(%esi)
7c9719:	83 78 18 00          	cmpl   $0x0,0x18(%eax)
7c971d:	75 03                	jne    0x7c9722
7c971f:	89 70 18             	mov    %esi,0x18(%eax)
7c9722:	0f b6 4c 24 39       	movzbl 0x39(%esp),%ecx
7c9727:	0f b6 44 24 38       	movzbl 0x38(%esp),%eax
7c972c:	c1 e1 08             	shl    $0x8,%ecx
7c972f:	0b c8                	or     %eax,%ecx
7c9731:	8b c1                	mov    %ecx,%eax
7c9733:	c1 f8 0b             	sar    $0xb,%eax
7c9736:	88 46 10             	mov    %al,0x10(%esi)
7c9739:	8b c1                	mov    %ecx,%eax
7c973b:	c1 f8 05             	sar    $0x5,%eax
7c973e:	80 e1 1f             	and    $0x1f,%cl
7c9741:	24 3f                	and    $0x3f,%al
7c9743:	02 c9                	add    %cl,%cl
7c9745:	88 46 11             	mov    %al,0x11(%esi)
7c9748:	88 4e 12             	mov    %cl,0x12(%esi)
7c974b:	0f b6 4c 24 37       	movzbl 0x37(%esp),%ecx
7c9750:	0f b6 44 24 36       	movzbl 0x36(%esp),%eax
7c9755:	c1 e1 08             	shl    $0x8,%ecx
7c9758:	0b c8                	or     %eax,%ecx
7c975a:	8a c1                	mov    %cl,%al
7c975c:	89 4c 24 10          	mov    %ecx,0x10(%esp)
7c9760:	24 1f                	and    $0x1f,%al
7c9762:	88 46 13             	mov    %al,0x13(%esi)
7c9765:	8b c1                	mov    %ecx,%eax
7c9767:	c1 f8 05             	sar    $0x5,%eax
7c976a:	24 0f                	and    $0xf,%al
7c976c:	c1 f9 09             	sar    $0x9,%ecx
7c976f:	88 46 14             	mov    %al,0x14(%esi)
7c9772:	81 c1 bc 07 00 00    	add    $0x7bc,%ecx
7c9778:	8d 44 24 10          	lea    0x10(%esp),%eax
7c977c:	89 4e 18             	mov    %ecx,0x18(%esi)
7c977f:	50                   	push   %eax
7c9780:	ff 74 24 1c          	push   0x1c(%esp)
7c9784:	53                   	push   %ebx
7c9785:	e8 46 02 00 00       	call   0x7c99d0
7c978a:	8b 6c 24 1c          	mov    0x1c(%esp),%ebp
7c978e:	83 c4 0c             	add    $0xc,%esp
7c9791:	89 46 04             	mov    %eax,0x4(%esi)
7c9794:	85 ed                	test   %ebp,%ebp
7c9796:	75 2b                	jne    0x7c97c3
7c9798:	8b 44 24 24          	mov    0x24(%esp),%eax
7c979c:	85 c0                	test   %eax,%eax
7c979e:	75 05                	jne    0x7c97a5
7c97a0:	89 77 28             	mov    %esi,0x28(%edi)
7c97a3:	eb 02                	jmp    0x7c97a7
7c97a5:	89 30                	mov    %esi,(%eax)
7c97a7:	8b 6c 24 14          	mov    0x14(%esp),%ebp
7c97ab:	45                   	inc    %ebp
7c97ac:	89 74 24 24          	mov    %esi,0x24(%esp)
7c97b0:	89 6c 24 14          	mov    %ebp,0x14(%esp)