501f94:	55                   	push   %ebp
501f95:	8b ec                	mov    %esp,%ebp
501f97:	83 c4 f0             	add    $0xfffffff0,%esp
501f9a:	53                   	push   %ebx
501f9b:	56                   	push   %esi
501f9c:	8b f1                	mov    %ecx,%esi
501f9e:	89 55 f8             	mov    %edx,-0x8(%ebp)
501fa1:	89 45 fc             	mov    %eax,-0x4(%ebp)
501fa4:	3b 75 08             	cmp    0x8(%ebp),%esi
501fa7:	0f 8d f7 00 00 00    	jge    0x5020a4
501fad:	8b c6                	mov    %esi,%eax
501faf:	03 c0                	add    %eax,%eax
501fb1:	3b 45 08             	cmp    0x8(%ebp),%eax
501fb4:	7f 0c                	jg     0x501fc2
501fb6:	8b d6                	mov    %esi,%edx
501fb8:	8b 45 f8             	mov    -0x8(%ebp),%eax
501fbb:	e8 b0 fb ff ff       	call   0x501b70
501fc0:	eb 0a                	jmp    0x501fcc
501fc2:	8b d6                	mov    %esi,%edx
501fc4:	8b 45 f8             	mov    -0x8(%ebp),%eax
501fc7:	e8 d0 fb ff ff       	call   0x501b9c
501fcc:	85 c0                	test   %eax,%eax
501fce:	0f 84 d0 00 00 00    	je     0x5020a4
501fd4:	8b de                	mov    %esi,%ebx
501fd6:	c1 e3 05             	shl    $0x5,%ebx
501fd9:	03 5d f8             	add    -0x8(%ebp),%ebx
501fdc:	8b 50 04             	mov    0x4(%eax),%edx
501fdf:	89 53 04             	mov    %edx,0x4(%ebx)
501fe2:	8b 48 0c             	mov    0xc(%eax),%ecx
501fe5:	89 4b 0c             	mov    %ecx,0xc(%ebx)
501fe8:	8b 50 14             	mov    0x14(%eax),%edx
501feb:	89 53 14             	mov    %edx,0x14(%ebx)
501fee:	8b 08                	mov    (%eax),%ecx
501ff0:	89 0b                	mov    %ecx,(%ebx)
501ff2:	8b 50 08             	mov    0x8(%eax),%edx
501ff5:	89 53 08             	mov    %edx,0x8(%ebx)
501ff8:	8b 48 10             	mov    0x10(%eax),%ecx
501ffb:	89 4b 10             	mov    %ecx,0x10(%ebx)
501ffe:	8b 50 04             	mov    0x4(%eax),%edx
502001:	2b 10                	sub    (%eax),%edx
502003:	c1 e2 03             	shl    $0x3,%edx
502006:	89 55 f4             	mov    %edx,-0xc(%ebp)
502009:	8b 48 0c             	mov    0xc(%eax),%ecx
50200c:	2b 48 08             	sub    0x8(%eax),%ecx
50200f:	c1 e1 02             	shl    $0x2,%ecx
502012:	8d 14 49             	lea    (%ecx,%ecx,2),%edx
502015:	8b 48 14             	mov    0x14(%eax),%ecx
502018:	2b 48 10             	sub    0x10(%eax),%ecx
50201b:	c1 e1 03             	shl    $0x3,%ecx
50201e:	03 c9                	add    %ecx,%ecx
502020:	89 4d f0             	mov    %ecx,-0x10(%ebp)
502023:	b9 01 00 00 00       	mov    $0x1,%ecx
502028:	3b 55 f0             	cmp    -0x10(%ebp),%edx
50202b:	7d 08                	jge    0x502035
50202d:	8b 55 f0             	mov    -0x10(%ebp),%edx
502030:	b9 02 00 00 00       	mov    $0x2,%ecx
502035:	3b 55 f4             	cmp    -0xc(%ebp),%edx
502038:	7d 02                	jge    0x50203c
50203a:	33 c9                	xor    %ecx,%ecx
50203c:	83 e9 01             	sub    $0x1,%ecx
50203f:	72 07                	jb     0x502048
502041:	74 19                	je     0x50205c
502043:	49                   	dec    %ecx
502044:	74 2c                	je     0x502072
502046:	eb 3e                	jmp    0x502086
502048:	8b 50 04             	mov    0x4(%eax),%edx
50204b:	03 10                	add    (%eax),%edx
50204d:	d1 fa                	sar    $1,%edx
50204f:	79 03                	jns    0x502054
502051:	83 d2 00             	adc    $0x0,%edx
502054:	89 50 04             	mov    %edx,0x4(%eax)
502057:	42                   	inc    %edx
502058:	89 13                	mov    %edx,(%ebx)
50205a:	eb 2a                	jmp    0x502086
50205c:	8b 50 0c             	mov    0xc(%eax),%edx
50205f:	03 50 08             	add    0x8(%eax),%edx
502062:	d1 fa                	sar    $1,%edx
502064:	79 03                	jns    0x502069
502066:	83 d2 00             	adc    $0x0,%edx
502069:	89 50 0c             	mov    %edx,0xc(%eax)
50206c:	42                   	inc    %edx
50206d:	89 53 08             	mov    %edx,0x8(%ebx)
502070:	eb 14                	jmp    0x502086
502072:	8b 50 14             	mov    0x14(%eax),%edx
502075:	03 50 10             	add    0x10(%eax),%edx
502078:	d1 fa                	sar    $1,%edx
50207a:	79 03                	jns    0x50207f
50207c:	83 d2 00             	adc    $0x0,%edx
50207f:	89 50 14             	mov    %edx,0x14(%eax)
502082:	42                   	inc    %edx
502083:	89 53 10             	mov    %edx,0x10(%ebx)
502086:	8b d0                	mov    %eax,%edx
502088:	8b 45 fc             	mov    -0x4(%ebp),%eax
50208b:	e8 34 fb ff ff       	call   0x501bc4
502090:	8b d3                	mov    %ebx,%edx
502092:	8b 45 fc             	mov    -0x4(%ebp),%eax
502095:	e8 2a fb ff ff       	call   0x501bc4
50209a:	46                   	inc    %esi
50209b:	3b 75 08             	cmp    0x8(%ebp),%esi
50209e:	0f 8c 09 ff ff ff    	jl     0x501fad
5020a4:	8b c6                	mov    %esi,%eax
5020a6:	5e                   	pop    %esi
5020a7:	5b                   	pop    %ebx
5020a8:	8b e5                	mov    %ebp,%esp
5020aa:	5d                   	pop    %ebp
5020ab:	c2 04 00             	ret    $0x4
5020ae:	90                   	nop
5020af:	90                   	nop
5020b0:	53                   	push   %ebx
5020b1:	56                   	push   %esi
5020b2:	57                   	push   %edi
5020b3:	55                   	push   %ebp
5020b4:	83 c4 d0             	add    $0xffffffd0,%esp
5020b7:	89 4c 24 04          	mov    %ecx,0x4(%esp)
5020bb:	89 04 24             	mov    %eax,(%esp)
5020be:	8b 04 24             	mov    (%esp),%eax
5020c1:	33 c9                	xor    %ecx,%ecx
5020c3:	8b 80 c4 01 00 00    	mov    0x1c4(%eax),%eax
5020c9:	8b 40 18             	mov    0x18(%eax),%eax
5020cc:	89 4c 24 18          	mov    %ecx,0x18(%esp)
5020d0:	33 c9                	xor    %ecx,%ecx
5020d2:	89 4c 24 1c          	mov    %ecx,0x1c(%esp)
5020d6:	33 c9                	xor    %ecx,%ecx
5020d8:	89 4c 24 20          	mov    %ecx,0x20(%esp)
5020dc:	33 c9                	xor    %ecx,%ecx
5020de:	89 4c 24 24          	mov    %ecx,0x24(%esp)
5020e2:	8b 0a                	mov    (%edx),%ecx
5020e4:	8b 5a 04             	mov    0x4(%edx),%ebx
5020e7:	89 5c 24 08          	mov    %ebx,0x8(%esp)
5020eb:	8b 5a 08             	mov    0x8(%edx),%ebx
5020ee:	8d 04 88             	lea    (%eax,%ecx,4),%eax
5020f1:	89 5c 24 0c          	mov    %ebx,0xc(%esp)
5020f5:	8b 5a 0c             	mov    0xc(%edx),%ebx
5020f8:	89 5c 24 10          	mov    %ebx,0x10(%esp)
5020fc:	8b 5a 10             	mov    0x10(%edx),%ebx
5020ff:	89 5c 24 14          	mov    %ebx,0x14(%esp)
502103:	8b 72 14             	mov    0x14(%edx),%esi
502106:	89 44 24 2c          	mov    %eax,0x2c(%esp)
50210a:	3b 4c 24 08          	cmp    0x8(%esp),%ecx
50210e:	0f 8f 8b 00 00 00    	jg     0x50219f
502114:	8b 5c 24 0c          	mov    0xc(%esp),%ebx
502118:	8b 44 24 2c          	mov    0x2c(%esp),%eax
50211c:	8b d0                	mov    %eax,%edx
50211e:	89 54 24 28          	mov    %edx,0x28(%esp)
502122:	3b 5c 24 10          	cmp    0x10(%esp),%ebx
502126:	7f 67                	jg     0x50218f
502128:	8b 44 24 28          	mov    0x28(%esp),%eax
50212c:	8b 38                	mov    (%eax),%edi
50212e:	8b c3                	mov    %ebx,%eax
502130:	c1 e0 06             	shl    $0x6,%eax
502133:	03 f8                	add    %eax,%edi
502135:	8b 54 24 14          	mov    0x14(%esp),%edx
502139:	03 d2                	add    %edx,%edx
50213b:	03 fa                	add    %edx,%edi
50213d:	8b 54 24 14          	mov    0x14(%esp),%edx
502141:	3b f2                	cmp    %edx,%esi
502143:	7c 43                	jl     0x502188
502145:	66 8b 07             	mov    (%edi),%ax
502148:	83 c7 02             	add    $0x2,%edi
50214b:	0f b7 c0             	movzwl %ax,%eax
50214e:	85 c0                	test   %eax,%eax
502150:	74 31                	je     0x502183
502152:	01 44 24 18          	add    %eax,0x18(%esp)
502156:	8b e9                	mov    %ecx,%ebp
502158:	c1 e5 03             	shl    $0x3,%ebp
50215b:	83 c5 04             	add    $0x4,%ebp
50215e:	0f af e8             	imul   %eax,%ebp
502161:	01 6c 24 1c          	add    %ebp,0x1c(%esp)
502165:	8b eb                	mov    %ebx,%ebp
502167:	c1 e5 02             	shl    $0x2,%ebp
50216a:	83 c5 02             	add    $0x2,%ebp
50216d:	0f af e8             	imul   %eax,%ebp
502170:	01 6c 24 20          	add    %ebp,0x20(%esp)
502174:	8b ea                	mov    %edx,%ebp
502176:	c1 e5 03             	shl    $0x3,%ebp
502179:	83 c5 04             	add    $0x4,%ebp
50217c:	0f af e8             	imul   %eax,%ebp
50217f:	01 6c 24 24          	add    %ebp,0x24(%esp)
502183:	42                   	inc    %edx
502184:	3b f2                	cmp    %edx,%esi
502186:	7d bd                	jge    0x502145
502188:	43                   	inc    %ebx
502189:	3b 5c 24 10          	cmp    0x10(%esp),%ebx
50218d:	7e 99                	jle    0x502128
50218f:	41                   	inc    %ecx
502190:	83 44 24 2c 04       	addl   $0x4,0x2c(%esp)
502195:	3b 4c 24 08          	cmp    0x8(%esp),%ecx
502199:	0f 8e 75 ff ff ff    	jle    0x502114
50219f:	8b 4c 24 18          	mov    0x18(%esp),%ecx
5021a3:	d1 f9                	sar    $1,%ecx
5021a5:	8b c1                	mov    %ecx,%eax
5021a7:	03 44 24 1c          	add    0x1c(%esp),%eax
5021ab:	99                   	cltd
5021ac:	f7 7c 24 18          	idivl  0x18(%esp)
5021b0:	8b 14 24             	mov    (%esp),%edx
5021b3:	8b 9a 84 00 00 00    	mov    0x84(%edx),%ebx
5021b9:	8b 13                	mov    (%ebx),%edx
5021bb:	8b 74 24 04          	mov    0x4(%esp),%esi
5021bf:	88 04 32             	mov    %al,(%edx,%esi,1)
5021c2:	8b c1                	mov    %ecx,%eax
5021c4:	03 44 24 20          	add    0x20(%esp),%eax
5021c8:	99                   	cltd
5021c9:	f7 7c 24 18          	idivl  0x18(%esp)
5021cd:	8b 53 04             	mov    0x4(%ebx),%edx
5021d0:	8b 74 24 04          	mov    0x4(%esp),%esi
5021d4:	88 04 32             	mov    %al,(%edx,%esi,1)
5021d7:	8b c1                	mov    %ecx,%eax
5021d9:	03 44 24 24          	add    0x24(%esp),%eax
5021dd:	99                   	cltd
5021de:	f7 7c 24 18          	idivl  0x18(%esp)
5021e2:	8b 4b 08             	mov    0x8(%ebx),%ecx
5021e5:	8b 54 24 04          	mov    0x4(%esp),%edx
5021e9:	88 04 11             	mov    %al,(%ecx,%edx,1)
5021ec:	83 c4 30             	add    $0x30,%esp
5021ef:	5d                   	pop    %ebp
5021f0:	5f                   	pop    %edi
5021f1:	5e                   	pop    %esi
5021f2:	5b                   	pop    %ebx
5021f3:	c3                   	ret
5021f4:	53                   	push   %ebx
5021f5:	56                   	push   %esi
5021f6:	57                   	push   %edi
5021f7:	8b f8                	mov    %eax,%edi
5021f9:	8b c7                	mov    %edi,%eax
5021fb:	8b da                	mov    %edx,%ebx
5021fd:	55                   	push   %ebp
5021fe:	8b cb                	mov    %ebx,%ecx
502200:	8b 70 04             	mov    0x4(%eax),%esi
502203:	ba 01 00 00 00       	mov    $0x1,%edx
502208:	c1 e1 05             	shl    $0x5,%ecx
50220b:	ff 16                	call   *(%esi)
50220d:	8b f0                	mov    %eax,%esi
50220f:	33 c0                	xor    %eax,%eax
502211:	33 d2                	xor    %edx,%edx
502213:	33 c9                	xor    %ecx,%ecx
502215:	89 06                	mov    %eax,(%esi)
502217:	8b c7                	mov    %edi,%eax
502219:	c7 46 04 1f 00 00 00 	movl   $0x1f,0x4(%esi)
502220:	89 56 08             	mov    %edx,0x8(%esi)
502223:	8b d6                	mov    %esi,%edx
502225:	c7 46 0c 3f 00 00 00 	movl   $0x3f,0xc(%esi)
50222c:	89 4e 10             	mov    %ecx,0x10(%esi)
50222f:	bd 01 00 00 00       	mov    $0x1,%ebp
502234:	c7 46 14 1f 00 00 00 	movl   $0x1f,0x14(%esi)
50223b:	e8 84 f9 ff ff       	call   0x501bc4
502240:	53                   	push   %ebx
502241:	8b cd                	mov    %ebp,%ecx
502243:	8b d6                	mov    %esi,%edx
502245:	8b c7                	mov    %edi,%eax
502247:	e8 48 fd ff ff       	call   0x501f94
50224c:	8b e8                	mov    %eax,%ebp
50224e:	33 db                	xor    %ebx,%ebx
502250:	3b eb                	cmp    %ebx,%ebp
502252:	7e 15                	jle    0x502269
502254:	8b d3                	mov    %ebx,%edx
502256:	8b cb                	mov    %ebx,%ecx
502258:	c1 e2 05             	shl    $0x5,%edx
50225b:	8b c7                	mov    %edi,%eax
50225d:	03 d6                	add    %esi,%edx
50225f:	e8 4c fe ff ff       	call   0x5020b0
502264:	43                   	inc    %ebx
502265:	3b eb                	cmp    %ebx,%ebp
502267:	7f eb                	jg     0x502254
502269:	89 af 80 00 00 00    	mov    %ebp,0x80(%edi)
50226f:	ba 01 00 00 00       	mov    $0x1,%edx
502274:	8b 07                	mov    (%edi),%eax
502276:	c7 40 14 5f 00 00 00 	movl   $0x5f,0x14(%eax)
50227d:	89 68 18             	mov    %ebp,0x18(%eax)
502280:	8b c7                	mov    %edi,%eax
502282:	8b 08                	mov    (%eax),%ecx
502284:	ff 51 04             	call   *0x4(%ecx)
502287:	5d                   	pop    %ebp
502288:	5f                   	pop    %edi
502289:	5e                   	pop    %esi
50228a:	5b                   	pop    %ebx
50228b:	c3                   	ret
50228c:	55                   	push   %ebp
50228d:	8b ec                	mov    %esp,%ebp
50228f:	81 c4 c4 fb ff ff    	add    $0xfffffbc4,%esp
502295:	53                   	push   %ebx
502296:	56                   	push   %esi
502297:	89 4d f8             	mov    %ecx,-0x8(%ebp)
50229a:	89 55 fc             	mov    %edx,-0x4(%ebp)
50229d:	8b 90 80 00 00 00    	mov    0x80(%eax),%edx
5022a3:	89 55 f4             	mov    %edx,-0xc(%ebp)
5022a6:	8b 4d fc             	mov    -0x4(%ebp),%ecx
5022a9:	83 c1 18             	add    $0x18,%ecx
5022ac:	89 4d f0             	mov    %ecx,-0x10(%ebp)
5022af:	8b 55 fc             	mov    -0x4(%ebp),%edx
5022b2:	03 55 f0             	add    -0x10(%ebp),%edx
5022b5:	d1 fa                	sar    $1,%edx
5022b7:	89 55 e4             	mov    %edx,-0x1c(%ebp)
5022ba:	8b 4d f8             	mov    -0x8(%ebp),%ecx
5022bd:	83 c1 1c             	add    $0x1c,%ecx
5022c0:	89 4d ec             	mov    %ecx,-0x14(%ebp)
5022c3:	8b 55 f8             	mov    -0x8(%ebp),%edx
5022c6:	03 55 ec             	add    -0x14(%ebp),%edx
5022c9:	d1 fa                	sar    $1,%edx
5022cb:	89 55 e0             	mov    %edx,-0x20(%ebp)
5022ce:	8b 4d 0c             	mov    0xc(%ebp),%ecx
5022d1:	83 c1 18             	add    $0x18,%ecx
5022d4:	89 4d e8             	mov    %ecx,-0x18(%ebp)
5022d7:	33 c9                	xor    %ecx,%ecx
5022d9:	8b 55 0c             	mov    0xc(%ebp),%edx
5022dc:	03 55 e8             	add    -0x18(%ebp),%edx
5022df:	d1 fa                	sar    $1,%edx
5022e1:	89 55 dc             	mov    %edx,-0x24(%ebp)
5022e4:	8d 95 c4 fb ff ff    	lea    -0x43c(%ebp),%edx
5022ea:	c7 45 d4 ff ff ff 7f 	movl   $0x7fffffff,-0x2c(%ebp)
5022f1:	89 4d d8             	mov    %ecx,-0x28(%ebp)
5022f4:	89 55 c4             	mov    %edx,-0x3c(%ebp)
5022f7:	8b 88 84 00 00 00    	mov    0x84(%eax),%ecx
5022fd:	8b 51 08             	mov    0x8(%ecx),%edx
502300:	8b ca                	mov    %edx,%ecx
502302:	89 4d c8             	mov    %ecx,-0x38(%ebp)
502305:	8b 90 84 00 00 00    	mov    0x84(%eax),%edx
50230b:	8b 4a 04             	mov    0x4(%edx),%ecx
50230e:	8b d1                	mov    %ecx,%edx
502310:	89 55 cc             	mov    %edx,-0x34(%ebp)
502313:	8b 80 84 00 00 00    	mov    0x84(%eax),%eax
502319:	8b 08                	mov    (%eax),%ecx
50231b:	8b c1                	mov    %ecx,%eax
50231d:	89 45 d0             	mov    %eax,-0x30(%ebp)
502320:	8b 55 d8             	mov    -0x28(%ebp),%edx
502323:	3b 55 f4             	cmp    -0xc(%ebp),%edx
502326:	0f 8d 61 01 00 00    	jge    0x50248d
50232c:	8b 4d d0             	mov    -0x30(%ebp),%ecx
50232f:	33 db                	xor    %ebx,%ebx
502331:	8a 19                	mov    (%ecx),%bl
502333:	3b 5d fc             	cmp    -0x4(%ebp),%ebx
502336:	7d 16                	jge    0x50234e
502338:	8b c3                	mov    %ebx,%eax
50233a:	2b 45 fc             	sub    -0x4(%ebp),%eax
50233d:	8b d0                	mov    %eax,%edx
50233f:	0f af d0             	imul   %eax,%edx
502342:	8b c3                	mov    %ebx,%eax
502344:	2b 45 f0             	sub    -0x10(%ebp),%eax
502347:	8b c8                	mov    %eax,%ecx
502349:	0f af c8             	imul   %eax,%ecx
50234c:	eb 38                	jmp    0x502386
50234e:	3b 5d f0             	cmp    -0x10(%ebp),%ebx
502351:	7e 16                	jle    0x502369
502353:	8b c3                	mov    %ebx,%eax
502355:	2b 45 f0             	sub    -0x10(%ebp),%eax
502358:	8b d0                	mov    %eax,%edx
50235a:	0f af d0             	imul   %eax,%edx
50235d:	8b c3                	mov    %ebx,%eax
50235f:	2b 45 fc             	sub    -0x4(%ebp),%eax
502362:	8b c8                	mov    %eax,%ecx
502364:	0f af c8             	imul   %eax,%ecx