476056:	8b 45 d0             	mov    -0x30(%ebp),%eax
476059:	66 3b f0             	cmp    %ax,%si
47605c:	0f 82 b8 00 00 00    	jb     0x47611a
476062:	66 3b 75 cc          	cmp    -0x34(%ebp),%si
476066:	0f 82 a4 00 00 00    	jb     0x476110
47606c:	8b 45 c8             	mov    -0x38(%ebp),%eax
47606f:	66 3b f0             	cmp    %ax,%si
476072:	0f 82 a2 00 00 00    	jb     0x47611a
476078:	66 3b 75 c4          	cmp    -0x3c(%ebp),%si
47607c:	0f 82 8e 00 00 00    	jb     0x476110
476082:	8b 45 c0             	mov    -0x40(%ebp),%eax
476085:	66 3b f0             	cmp    %ax,%si
476088:	0f 82 8c 00 00 00    	jb     0x47611a
47608e:	66 3b 75 bc          	cmp    -0x44(%ebp),%si
476092:	72 7c                	jb     0x476110
476094:	8b 45 b8             	mov    -0x48(%ebp),%eax
476097:	66 3b f0             	cmp    %ax,%si
47609a:	72 7e                	jb     0x47611a
47609c:	66 3b 75 b4          	cmp    -0x4c(%ebp),%si
4760a0:	72 6e                	jb     0x476110
4760a2:	8b 45 b0             	mov    -0x50(%ebp),%eax
4760a5:	66 3b f0             	cmp    %ax,%si
4760a8:	72 70                	jb     0x47611a
4760aa:	66 3b 75 ac          	cmp    -0x54(%ebp),%si
4760ae:	72 60                	jb     0x476110
4760b0:	8b 45 a8             	mov    -0x58(%ebp),%eax
4760b3:	66 3b f0             	cmp    %ax,%si
4760b6:	72 62                	jb     0x47611a
4760b8:	66 3b 75 a4          	cmp    -0x5c(%ebp),%si
4760bc:	72 52                	jb     0x476110
4760be:	8b 45 a0             	mov    -0x60(%ebp),%eax
4760c1:	66 3b f0             	cmp    %ax,%si
4760c4:	72 54                	jb     0x47611a
4760c6:	66 3b 75 9c          	cmp    -0x64(%ebp),%si
4760ca:	72 44                	jb     0x476110
4760cc:	8b 45 98             	mov    -0x68(%ebp),%eax
4760cf:	66 3b f0             	cmp    %ax,%si
4760d2:	72 46                	jb     0x47611a
4760d4:	66 3b 75 94          	cmp    -0x6c(%ebp),%si
4760d8:	72 36                	jb     0x476110
4760da:	8b 45 90             	mov    -0x70(%ebp),%eax
4760dd:	66 3b f0             	cmp    %ax,%si
4760e0:	72 38                	jb     0x47611a
4760e2:	66 3b 75 8c          	cmp    -0x74(%ebp),%si
4760e6:	72 28                	jb     0x476110
4760e8:	8b 45 88             	mov    -0x78(%ebp),%eax
4760eb:	66 3b f0             	cmp    %ax,%si
4760ee:	72 2a                	jb     0x47611a
4760f0:	66 3b 75 84          	cmp    -0x7c(%ebp),%si
4760f4:	72 1a                	jb     0x476110
4760f6:	8b 45 80             	mov    -0x80(%ebp),%eax
4760f9:	66 3b f0             	cmp    %ax,%si
4760fc:	72 1c                	jb     0x47611a
4760fe:	66 3b b5 7c ff ff ff 	cmp    -0x84(%ebp),%si
476105:	eb 07                	jmp    0x47610e
476107:	66 3b b5 78 ff ff ff 	cmp    -0x88(%ebp),%si
47610e:	73 0a                	jae    0x47611a
476110:	0f b7 ce             	movzwl %si,%ecx
476113:	2b c8                	sub    %eax,%ecx
476115:	83 f9 ff             	cmp    $0xffffffff,%ecx
476118:	75 2e                	jne    0x476148
47611a:	0f b7 ce             	movzwl %si,%ecx
47611d:	83 f9 41             	cmp    $0x41,%ecx
476120:	72 05                	jb     0x476127
476122:	83 f9 5a             	cmp    $0x5a,%ecx
476125:	76 0b                	jbe    0x476132
476127:	83 f9 61             	cmp    $0x61,%ecx
47612a:	72 19                	jb     0x476145
47612c:	66 83 fe 7a          	cmp    $0x7a,%si
476130:	77 13                	ja     0x476145
476132:	6a 19                	push   $0x19
476134:	8d 46 9f             	lea    -0x61(%esi),%eax
476137:	5a                   	pop    %edx
476138:	66 3b c2             	cmp    %dx,%ax
47613b:	77 03                	ja     0x476140
47613d:	83 c1 e0             	add    $0xffffffe0,%ecx
476140:	83 c1 c9             	add    $0xffffffc9,%ecx
476143:	eb 03                	jmp    0x476148
476145:	83 c9 ff             	or     $0xffffffff,%ecx
476148:	8b 55 14             	mov    0x14(%ebp),%edx
47614b:	3b ca                	cmp    %edx,%ecx
47614d:	73 34                	jae    0x476183
47614f:	8b 45 fc             	mov    -0x4(%ebp),%eax
476152:	0f af c2             	imul   %edx,%eax
476155:	8d 14 08             	lea    (%eax,%ecx,1),%edx
476158:	3b d0                	cmp    %eax,%edx
47615a:	1b c9                	sbb    %ecx,%ecx
47615c:	f7 d9                	neg    %ecx
47615e:	3b 7d fc             	cmp    -0x4(%ebp),%edi
476161:	89 55 fc             	mov    %edx,-0x4(%ebp)
476164:	1b c0                	sbb    %eax,%eax
476166:	f7 d8                	neg    %eax
476168:	0b c8                	or     %eax,%ecx
47616a:	c1 e1 02             	shl    $0x2,%ecx
47616d:	83 c9 08             	or     $0x8,%ecx
476170:	0b d9                	or     %ecx,%ebx
476172:	8b 4d 0c             	mov    0xc(%ebp),%ecx
476175:	0f b7 31             	movzwl (%ecx),%esi
476178:	83 c1 02             	add    $0x2,%ecx
47617b:	89 4d 0c             	mov    %ecx,0xc(%ebp)
47617e:	e9 3f fe ff ff       	jmp    0x475fc2
476183:	56                   	push   %esi
476184:	8d 4d 0c             	lea    0xc(%ebp),%ecx
476187:	e8 4e 2f 00 00       	call   0x4790da
47618c:	f6 c3 08             	test   $0x8,%bl
47618f:	75 13                	jne    0x4761a4
476191:	8b 45 10             	mov    0x10(%ebp),%eax
476194:	85 c0                	test   %eax,%eax
476196:	74 08                	je     0x4761a0
476198:	8b 8d 70 ff ff ff    	mov    -0x90(%ebp),%ecx
47619e:	89 08                	mov    %ecx,(%eax)
4761a0:	33 c0                	xor    %eax,%eax
4761a2:	eb 65                	jmp    0x476209
4761a4:	8b 75 fc             	mov    -0x4(%ebp),%esi
4761a7:	56                   	push   %esi
4761a8:	53                   	push   %ebx
4761a9:	e8 b0 f7 ff ff       	call   0x47595e
4761ae:	59                   	pop    %ecx
4761af:	59                   	pop    %ecx
4761b0:	84 c0                	test   %al,%al
4761b2:	74 40                	je     0x4761f4
4761b4:	8b 45 08             	mov    0x8(%ebp),%eax
4761b7:	c6 40 1c 01          	movb   $0x1,0x1c(%eax)
4761bb:	c7 40 18 22 00 00 00 	movl   $0x22,0x18(%eax)
4761c2:	f6 c3 01             	test   $0x1,%bl
4761c5:	75 05                	jne    0x4761cc
4761c7:	83 ce ff             	or     $0xffffffff,%esi
4761ca:	eb 2f                	jmp    0x4761fb
4761cc:	8b 4d 10             	mov    0x10(%ebp),%ecx
4761cf:	f6 c3 02             	test   $0x2,%bl
4761d2:	74 10                	je     0x4761e4
4761d4:	85 c9                	test   %ecx,%ecx
4761d6:	74 05                	je     0x4761dd
4761d8:	8b 45 0c             	mov    0xc(%ebp),%eax
4761db:	89 01                	mov    %eax,(%ecx)
4761dd:	b8 00 00 00 80       	mov    $0x80000000,%eax
4761e2:	eb 25                	jmp    0x476209
4761e4:	85 c9                	test   %ecx,%ecx
4761e6:	74 05                	je     0x4761ed
4761e8:	8b 45 0c             	mov    0xc(%ebp),%eax
4761eb:	89 01                	mov    %eax,(%ecx)
4761ed:	b8 ff ff ff 7f       	mov    $0x7fffffff,%eax
4761f2:	eb 15                	jmp    0x476209
4761f4:	f6 c3 02             	test   $0x2,%bl
4761f7:	74 02                	je     0x4761fb
4761f9:	f7 de                	neg    %esi
4761fb:	8b 55 10             	mov    0x10(%ebp),%edx
4761fe:	85 d2                	test   %edx,%edx
476200:	74 05                	je     0x476207
476202:	8b 4d 0c             	mov    0xc(%ebp),%ecx
476205:	89 0a                	mov    %ecx,(%edx)
476207:	8b c6                	mov    %esi,%eax
476209:	5f                   	pop    %edi
47620a:	5e                   	pop    %esi
47620b:	5b                   	pop    %ebx
47620c:	c9                   	leave
47620d:	c3                   	ret
47620e:	8b ff                	mov    %edi,%edi
476210:	56                   	push   %esi
476211:	8b f1                	mov    %ecx,%esi
476213:	57                   	push   %edi
476214:	8b be 04 04 00 00    	mov    0x404(%esi),%edi
47621a:	e8 0b f6 ff ff       	call   0x47582a
47621f:	85 ff                	test   %edi,%edi
476221:	75 04                	jne    0x476227
476223:	03 c6                	add    %esi,%eax
476225:	eb 02                	jmp    0x476229
476227:	03 c7                	add    %edi,%eax
476229:	5f                   	pop    %edi
47622a:	5e                   	pop    %esi
47622b:	c3                   	ret
47622c:	8b ff                	mov    %edi,%edi
47622e:	55                   	push   %ebp
47622f:	8b ec                	mov    %esp,%ebp
476231:	83 ec 0c             	sub    $0xc,%esp
476234:	53                   	push   %ebx
476235:	56                   	push   %esi
476236:	8b f1                	mov    %ecx,%esi
476238:	57                   	push   %edi
476239:	ff 76 28             	push   0x28(%esi)
47623c:	e8 bb 26 00 00       	call   0x4788fc
476241:	59                   	pop    %ecx
476242:	8b c8                	mov    %eax,%ecx
476244:	89 45 f4             	mov    %eax,-0xc(%ebp)
476247:	6a 00                	push   $0x0
476249:	5b                   	pop    %ebx
47624a:	83 e9 01             	sub    $0x1,%ecx
47624d:	0f 84 99 00 00 00    	je     0x4762ec
476253:	83 e9 01             	sub    $0x1,%ecx
476256:	74 75                	je     0x4762cd
476258:	49                   	dec    %ecx
476259:	83 e9 01             	sub    $0x1,%ecx
47625c:	74 46                	je     0x4762a4
47625e:	83 e9 04             	sub    $0x4,%ecx
476261:	74 27                	je     0x47628a
476263:	8b 46 08             	mov    0x8(%esi),%eax
476266:	83 c0 18             	add    $0x18,%eax
476269:	c6 40 04 01          	movb   $0x1,0x4(%eax)
47626d:	c7 00 16 00 00 00    	movl   $0x16,(%eax)
476273:	ff 76 08             	push   0x8(%esi)
476276:	53                   	push   %ebx
476277:	53                   	push   %ebx
476278:	53                   	push   %ebx
476279:	53                   	push   %ebx
47627a:	53                   	push   %ebx
47627b:	e8 24 33 00 00       	call   0x4795a4
476280:	83 c4 18             	add    $0x18,%esp
476283:	32 c0                	xor    %al,%al
476285:	e9 28 01 00 00       	jmp    0x4763b2
47628a:	8b 4e 10             	mov    0x10(%esi),%ecx
47628d:	8b 7e 1c             	mov    0x1c(%esi),%edi
476290:	8b c7                	mov    %edi,%eax
476292:	c1 e8 04             	shr    $0x4,%eax
476295:	a8 01                	test   $0x1,%al
476297:	8d 41 08             	lea    0x8(%ecx),%eax
47629a:	89 46 10             	mov    %eax,0x10(%esi)
47629d:	8b 01                	mov    (%ecx),%eax
47629f:	8b 51 04             	mov    0x4(%ecx),%edx
4762a2:	eb 66                	jmp    0x47630a
4762a4:	8b 7e 1c             	mov    0x1c(%esi),%edi
4762a7:	8b c7                	mov    %edi,%eax
4762a9:	c1 e8 04             	shr    $0x4,%eax
4762ac:	a8 01                	test   $0x1,%al
4762ae:	74 0d                	je     0x4762bd
4762b0:	8b 46 10             	mov    0x10(%esi),%eax
4762b3:	8d 48 04             	lea    0x4(%eax),%ecx
4762b6:	89 4e 10             	mov    %ecx,0x10(%esi)
4762b9:	8b 00                	mov    (%eax),%eax
4762bb:	eb 4c                	jmp    0x476309
4762bd:	8b 4e 10             	mov    0x10(%esi),%ecx
4762c0:	89 5d f8             	mov    %ebx,-0x8(%ebp)
4762c3:	8d 41 04             	lea    0x4(%ecx),%eax
4762c6:	89 46 10             	mov    %eax,0x10(%esi)
4762c9:	8b 01                	mov    (%ecx),%eax
4762cb:	eb 40                	jmp    0x47630d
4762cd:	8b 7e 1c             	mov    0x1c(%esi),%edi
4762d0:	8b c7                	mov    %edi,%eax
4762d2:	8b 4e 10             	mov    0x10(%esi),%ecx
4762d5:	c1 e8 04             	shr    $0x4,%eax
4762d8:	a8 01                	test   $0x1,%al
4762da:	8d 41 04             	lea    0x4(%ecx),%eax
4762dd:	89 46 10             	mov    %eax,0x10(%esi)
4762e0:	74 05                	je     0x4762e7
4762e2:	0f bf 01             	movswl (%ecx),%eax
4762e5:	eb 22                	jmp    0x476309
4762e7:	0f b7 01             	movzwl (%ecx),%eax
4762ea:	eb 1d                	jmp    0x476309
4762ec:	8b 7e 1c             	mov    0x1c(%esi),%edi
4762ef:	8b c7                	mov    %edi,%eax
4762f1:	8b 4e 10             	mov    0x10(%esi),%ecx
4762f4:	c1 e8 04             	shr    $0x4,%eax
4762f7:	a8 01                	test   $0x1,%al
4762f9:	8d 41 04             	lea    0x4(%ecx),%eax
4762fc:	89 46 10             	mov    %eax,0x10(%esi)
4762ff:	74 05                	je     0x476306
476301:	0f be 01             	movsbl (%ecx),%eax
476304:	eb 03                	jmp    0x476309
476306:	0f b6 01             	movzbl (%ecx),%eax
476309:	99                   	cltd
47630a:	89 55 f8             	mov    %edx,-0x8(%ebp)
47630d:	8b 55 f8             	mov    -0x8(%ebp),%edx
476310:	89 45 fc             	mov    %eax,-0x4(%ebp)
476313:	8b c7                	mov    %edi,%eax
476315:	8b 4d fc             	mov    -0x4(%ebp),%ecx
476318:	c1 e8 04             	shr    $0x4,%eax
47631b:	a8 01                	test   $0x1,%al
47631d:	74 16                	je     0x476335
47631f:	3b d3                	cmp    %ebx,%edx
476321:	7f 12                	jg     0x476335
476323:	7c 04                	jl     0x476329
476325:	3b cb                	cmp    %ebx,%ecx
476327:	73 0c                	jae    0x476335
476329:	f7 d9                	neg    %ecx
47632b:	13 d3                	adc    %ebx,%edx
47632d:	f7 da                	neg    %edx
47632f:	83 cf 40             	or     $0x40,%edi
476332:	89 7e 1c             	mov    %edi,0x1c(%esi)
476335:	83 7e 24 00          	cmpl   $0x0,0x24(%esi)
476339:	89 55 f8             	mov    %edx,-0x8(%ebp)
47633c:	89 4d fc             	mov    %ecx,-0x4(%ebp)
47633f:	7d 09                	jge    0x47634a
476341:	c7 46 24 01 00 00 00 	movl   $0x1,0x24(%esi)
476348:	eb 1a                	jmp    0x476364
47634a:	ff 76 08             	push   0x8(%esi)
47634d:	83 e7 f7             	and    $0xfffffff7,%edi
476350:	8d 4e 3c             	lea    0x3c(%esi),%ecx
476353:	ff 76 24             	push   0x24(%esi)
476356:	89 7e 1c             	mov    %edi,0x1c(%esi)
476359:	e8 fd f4 ff ff       	call   0x47585b
47635e:	8b 4d fc             	mov    -0x4(%ebp),%ecx
476361:	8b 55 f8             	mov    -0x8(%ebp),%edx
476364:	8b c1                	mov    %ecx,%eax
476366:	0b c2                	or     %edx,%eax
476368:	75 04                	jne    0x47636e
47636a:	83 66 1c df          	andl   $0xffffffdf,0x1c(%esi)
47636e:	83 7d f4 08          	cmpl   $0x8,-0xc(%ebp)
476372:	ff 75 08             	push   0x8(%ebp)
476375:	88 5e 38             	mov    %bl,0x38(%esi)
476378:	75 0b                	jne    0x476385
47637a:	52                   	push   %edx
47637b:	51                   	push   %ecx
47637c:	8b ce                	mov    %esi,%ecx
47637e:	e8 06 0b 00 00       	call   0x476e89
476383:	eb 08                	jmp    0x47638d
476385:	51                   	push   %ecx
476386:	8b ce                	mov    %esi,%ecx
476388:	e8 fc 07 00 00       	call   0x476b89
47638d:	8b 46 1c             	mov    0x1c(%esi),%eax
476390:	c1 e8 07             	shr    $0x7,%eax
476393:	a8 01                	test   $0x1,%al
476395:	74 19                	je     0x4763b0
476397:	39 5e 34             	cmp    %ebx,0x34(%esi)
47639a:	74 08                	je     0x4763a4
47639c:	8b 46 30             	mov    0x30(%esi),%eax
47639f:	80 38 30             	cmpb   $0x30,(%eax)
4763a2:	74 0c                	je     0x4763b0
4763a4:	ff 4e 30             	decl   0x30(%esi)
4763a7:	8b 4e 30             	mov    0x30(%esi),%ecx
4763aa:	c6 01 30             	movb   $0x30,(%ecx)
4763ad:	ff 46 34             	incl   0x34(%esi)
4763b0:	b0 01                	mov    $0x1,%al
4763b2:	5f                   	pop    %edi
4763b3:	5e                   	pop    %esi
4763b4:	5b                   	pop    %ebx
4763b5:	c9                   	leave
4763b6:	c2 04 00             	ret    $0x4
4763b9:	8b ff                	mov    %edi,%edi
4763bb:	55                   	push   %ebp
4763bc:	8b ec                	mov    %esp,%ebp
4763be:	83 ec 0c             	sub    $0xc,%esp
4763c1:	53                   	push   %ebx
4763c2:	56                   	push   %esi
4763c3:	8b f1                	mov    %ecx,%esi
4763c5:	57                   	push   %edi
4763c6:	ff 76 28             	push   0x28(%esi)
4763c9:	e8 2e 25 00 00       	call   0x4788fc
4763ce:	59                   	pop    %ecx
4763cf:	8b c8                	mov    %eax,%ecx
4763d1:	89 45 f4             	mov    %eax,-0xc(%ebp)
4763d4:	6a 00                	push   $0x0
4763d6:	5b                   	pop    %ebx
4763d7:	83 e9 01             	sub    $0x1,%ecx
4763da:	0f 84 99 00 00 00    	je     0x476479
4763e0:	83 e9 01             	sub    $0x1,%ecx
4763e3:	74 75                	je     0x47645a
4763e5:	49                   	dec    %ecx
4763e6:	83 e9 01             	sub    $0x1,%ecx
4763e9:	74 46                	je     0x476431
4763eb:	83 e9 04             	sub    $0x4,%ecx
4763ee:	74 27                	je     0x476417