414fbe:	8b 45 e0             	mov    -0x20(%ebp),%eax
414fc1:	8b 4d 10             	mov    0x10(%ebp),%ecx
414fc4:	8d 3c 47             	lea    (%edi,%eax,2),%edi
414fc7:	eb 29                	jmp    0x414ff2
414fc9:	c6 45 ec 00          	movb   $0x0,-0x14(%ebp)
414fcd:	6a 00                	push   $0x0
414fcf:	8d 45 e0             	lea    -0x20(%ebp),%eax
414fd2:	50                   	push   %eax
414fd3:	8b 45 f4             	mov    -0xc(%ebp),%eax
414fd6:	50                   	push   %eax
414fd7:	ff 75 f8             	push   -0x8(%ebp)
414fda:	ff 75 e4             	push   -0x1c(%ebp)
414fdd:	ff 15 90 b0 41 00    	call   *0x41b090
414fe3:	85 c0                	test   %eax,%eax
414fe5:	74 5a                	je     0x415041
414fe7:	8b 4d 10             	mov    0x10(%ebp),%ecx
414fea:	39 4d e0             	cmp    %ecx,-0x20(%ebp)
414fed:	77 52                	ja     0x415041
414fef:	03 7d e0             	add    -0x20(%ebp),%edi
414ff2:	8b 45 f0             	mov    -0x10(%ebp),%eax
414ff5:	8b 55 e8             	mov    -0x18(%ebp),%edx
414ff8:	8b 04 85 c0 41 42 00 	mov    0x4241c0(,%eax,4),%eax
414fff:	f6 44 02 28 80       	testb  $0x80,0x28(%edx,%eax,1)
415004:	74 a9                	je     0x414faf
415006:	80 7d ff 02          	cmpb   $0x2,-0x1(%ebp)
41500a:	74 17                	je     0x415023
41500c:	d1 e9                	shr    $1,%ecx
41500e:	51                   	push   %ecx
41500f:	ff 75 0c             	push   0xc(%ebp)
415012:	57                   	push   %edi
415013:	ff 75 f8             	push   -0x8(%ebp)
415016:	53                   	push   %ebx
415017:	e8 f8 fa ff ff       	call   0x414b14
41501c:	83 c4 14             	add    $0x14,%esp
41501f:	8b f8                	mov    %eax,%edi
415021:	eb 8c                	jmp    0x414faf
415023:	d1 ef                	shr    $1,%edi
415025:	80 7d ec 00          	cmpb   $0x0,-0x14(%ebp)
415029:	57                   	push   %edi
41502a:	ff 75 dc             	push   -0x24(%ebp)
41502d:	53                   	push   %ebx
41502e:	74 0a                	je     0x41503a
415030:	e8 2f fc ff ff       	call   0x414c64
415035:	83 c4 0c             	add    $0xc,%esp
415038:	eb e5                	jmp    0x41501f
41503a:	e8 15 f9 ff ff       	call   0x414954
41503f:	eb f4                	jmp    0x415035
415041:	ff 15 48 b0 41 00    	call   *0x41b048
415047:	6a 05                	push   $0x5
415049:	5f                   	pop    %edi
41504a:	3b c7                	cmp    %edi,%eax
41504c:	75 17                	jne    0x415065
41504e:	e8 b4 2c ff ff       	call   0x407d07
415053:	c7 00 09 00 00 00    	movl   $0x9,(%eax)
415059:	e8 96 2c ff ff       	call   0x407cf4
41505e:	89 38                	mov    %edi,(%eax)
415060:	e9 47 ff ff ff       	jmp    0x414fac
415065:	83 f8 6d             	cmp    $0x6d,%eax
415068:	0f 85 37 ff ff ff    	jne    0x414fa5
41506e:	33 ff                	xor    %edi,%edi
415070:	e9 3a ff ff ff       	jmp    0x414faf
415075:	33 c0                	xor    %eax,%eax
415077:	eb 1b                	jmp    0x415094
415079:	e8 76 2c ff ff       	call   0x407cf4
41507e:	83 20 00             	andl   $0x0,(%eax)
415081:	e8 81 2c ff ff       	call   0x407d07
415086:	c7 00 09 00 00 00    	movl   $0x9,(%eax)
41508c:	e8 9d 2b ff ff       	call   0x407c2e
415091:	83 c8 ff             	or     $0xffffffff,%eax
415094:	5f                   	pop    %edi
415095:	5b                   	pop    %ebx
415096:	8b e5                	mov    %ebp,%esp
415098:	5d                   	pop    %ebp
415099:	c3                   	ret
41509a:	8b ff                	mov    %edi,%edi
41509c:	55                   	push   %ebp
41509d:	8b ec                	mov    %esp,%ebp
41509f:	51                   	push   %ecx
4150a0:	a1 40 39 42 00       	mov    0x423940,%eax
4150a5:	83 f8 fe             	cmp    $0xfffffffe,%eax
4150a8:	75 0a                	jne    0x4150b4
4150aa:	e8 f3 0e 00 00       	call   0x415fa2
4150af:	a1 40 39 42 00       	mov    0x423940,%eax
4150b4:	83 f8 ff             	cmp    $0xffffffff,%eax
4150b7:	75 07                	jne    0x4150c0
4150b9:	b8 ff ff 00 00       	mov    $0xffff,%eax
4150be:	eb 1b                	jmp    0x4150db
4150c0:	6a 00                	push   $0x0
4150c2:	8d 4d fc             	lea    -0x4(%ebp),%ecx
4150c5:	51                   	push   %ecx
4150c6:	6a 01                	push   $0x1
4150c8:	8d 4d 08             	lea    0x8(%ebp),%ecx
4150cb:	51                   	push   %ecx
4150cc:	50                   	push   %eax
4150cd:	ff 15 e0 b0 41 00    	call   *0x41b0e0
4150d3:	85 c0                	test   %eax,%eax
4150d5:	74 e2                	je     0x4150b9
4150d7:	66 8b 45 08          	mov    0x8(%ebp),%ax
4150db:	8b e5                	mov    %ebp,%esp
4150dd:	5d                   	pop    %ebp
4150de:	c3                   	ret
4150df:	8b ff                	mov    %edi,%edi
4150e1:	55                   	push   %ebp
4150e2:	8b ec                	mov    %esp,%ebp
4150e4:	ff 05 ac 41 42 00    	incl   0x4241ac
4150ea:	53                   	push   %ebx
4150eb:	56                   	push   %esi
4150ec:	8b 75 08             	mov    0x8(%ebp),%esi
4150ef:	bb 00 10 00 00       	mov    $0x1000,%ebx
4150f4:	53                   	push   %ebx
4150f5:	e8 64 47 ff ff       	call   0x40985e
4150fa:	6a 00                	push   $0x0
4150fc:	89 46 04             	mov    %eax,0x4(%esi)
4150ff:	e8 20 47 ff ff       	call   0x409824
415104:	83 7e 04 00          	cmpl   $0x0,0x4(%esi)
415108:	8d 46 0c             	lea    0xc(%esi),%eax
41510b:	59                   	pop    %ecx
41510c:	59                   	pop    %ecx
41510d:	74 0b                	je     0x41511a
41510f:	6a 40                	push   $0x40
415111:	59                   	pop    %ecx
415112:	f0 09 08             	lock or %ecx,(%eax)
415115:	89 5e 18             	mov    %ebx,0x18(%esi)
415118:	eb 15                	jmp    0x41512f
41511a:	b9 00 04 00 00       	mov    $0x400,%ecx
41511f:	f0 09 08             	lock or %ecx,(%eax)
415122:	8d 46 14             	lea    0x14(%esi),%eax
415125:	c7 46 18 02 00 00 00 	movl   $0x2,0x18(%esi)
41512c:	89 46 04             	mov    %eax,0x4(%esi)
41512f:	8b 46 04             	mov    0x4(%esi),%eax
415132:	83 66 08 00          	andl   $0x0,0x8(%esi)
415136:	89 06                	mov    %eax,(%esi)
415138:	5e                   	pop    %esi
415139:	5b                   	pop    %ebx
41513a:	5d                   	pop    %ebp
41513b:	c3                   	ret
41513c:	8b ff                	mov    %edi,%edi
41513e:	55                   	push   %ebp
41513f:	8b ec                	mov    %esp,%ebp
415141:	56                   	push   %esi
415142:	8b 75 14             	mov    0x14(%ebp),%esi
415145:	85 f6                	test   %esi,%esi
415147:	7e 14                	jle    0x41515d
415149:	56                   	push   %esi
41514a:	ff 75 10             	push   0x10(%ebp)
41514d:	e8 78 2c ff ff       	call   0x407dca
415152:	59                   	pop    %ecx
415153:	3b c6                	cmp    %esi,%eax
415155:	59                   	pop    %ecx
415156:	8d 70 01             	lea    0x1(%eax),%esi
415159:	7c 02                	jl     0x41515d
41515b:	8b f0                	mov    %eax,%esi
41515d:	33 c0                	xor    %eax,%eax
41515f:	50                   	push   %eax
415160:	50                   	push   %eax
415161:	50                   	push   %eax
415162:	ff 75 1c             	push   0x1c(%ebp)
415165:	ff 75 18             	push   0x18(%ebp)
415168:	56                   	push   %esi
415169:	ff 75 10             	push   0x10(%ebp)
41516c:	ff 75 0c             	push   0xc(%ebp)
41516f:	ff 75 08             	push   0x8(%ebp)
415172:	e8 33 6f ff ff       	call   0x40c0aa
415177:	5e                   	pop    %esi
415178:	5d                   	pop    %ebp
415179:	c3                   	ret
41517a:	cc                   	int3
41517b:	cc                   	int3
41517c:	cc                   	int3
41517d:	cc                   	int3
41517e:	cc                   	int3
41517f:	cc                   	int3
415180:	8b ff                	mov    %edi,%edi
415182:	55                   	push   %ebp
415183:	8b ec                	mov    %esp,%ebp
415185:	51                   	push   %ecx
415186:	a1 0c 30 42 00       	mov    0x42300c,%eax
41518b:	33 c5                	xor    %ebp,%eax
41518d:	89 45 fc             	mov    %eax,-0x4(%ebp)
415190:	8b 4d 08             	mov    0x8(%ebp),%ecx
415193:	53                   	push   %ebx
415194:	8b 5d 0c             	mov    0xc(%ebp),%ebx
415197:	3b d9                	cmp    %ecx,%ebx
415199:	76 6c                	jbe    0x415207
41519b:	8b 45 10             	mov    0x10(%ebp),%eax
41519e:	56                   	push   %esi
41519f:	57                   	push   %edi
4151a0:	8d 14 01             	lea    (%ecx,%eax,1),%edx
4151a3:	8b f2                	mov    %edx,%esi
4151a5:	8b f9                	mov    %ecx,%edi
4151a7:	3b f3                	cmp    %ebx,%esi
4151a9:	77 28                	ja     0x4151d3
4151ab:	eb 03                	jmp    0x4151b0
4151ad:	8d 49 00             	lea    0x0(%ecx),%ecx
4151b0:	8b 4d 14             	mov    0x14(%ebp),%ecx
4151b3:	57                   	push   %edi
4151b4:	56                   	push   %esi
4151b5:	ff 15 a8 b1 41 00    	call   *0x41b1a8
4151bb:	ff 55 14             	call   *0x14(%ebp)
4151be:	83 c4 08             	add    $0x8,%esp
4151c1:	85 c0                	test   %eax,%eax
4151c3:	7e 02                	jle    0x4151c7
4151c5:	8b fe                	mov    %esi,%edi
4151c7:	8b 45 10             	mov    0x10(%ebp),%eax
4151ca:	03 f0                	add    %eax,%esi
4151cc:	3b f3                	cmp    %ebx,%esi
4151ce:	76 e0                	jbe    0x4151b0
4151d0:	8b 4d 08             	mov    0x8(%ebp),%ecx
4151d3:	8b f0                	mov    %eax,%esi
4151d5:	8b d3                	mov    %ebx,%edx
4151d7:	3b fb                	cmp    %ebx,%edi
4151d9:	74 21                	je     0x4151fc
4151db:	85 c0                	test   %eax,%eax
4151dd:	74 1d                	je     0x4151fc
4151df:	2b fb                	sub    %ebx,%edi
4151e1:	8a 02                	mov    (%edx),%al
4151e3:	8d 52 01             	lea    0x1(%edx),%edx
4151e6:	8a 4c 17 ff          	mov    -0x1(%edi,%edx,1),%cl
4151ea:	88 44 17 ff          	mov    %al,-0x1(%edi,%edx,1)
4151ee:	88 4a ff             	mov    %cl,-0x1(%edx)
4151f1:	83 ee 01             	sub    $0x1,%esi
4151f4:	75 eb                	jne    0x4151e1
4151f6:	8b 45 10             	mov    0x10(%ebp),%eax
4151f9:	8b 4d 08             	mov    0x8(%ebp),%ecx
4151fc:	2b d8                	sub    %eax,%ebx
4151fe:	8d 14 01             	lea    (%ecx,%eax,1),%edx
415201:	3b d9                	cmp    %ecx,%ebx
415203:	77 9e                	ja     0x4151a3
415205:	5f                   	pop    %edi
415206:	5e                   	pop    %esi
415207:	8b 4d fc             	mov    -0x4(%ebp),%ecx
41520a:	33 cd                	xor    %ebp,%ecx
41520c:	5b                   	pop    %ebx
41520d:	e8 44 dd fe ff       	call   0x402f56
415212:	8b e5                	mov    %ebp,%esp
415214:	5d                   	pop    %ebp
415215:	c3                   	ret
415216:	cc                   	int3
415217:	cc                   	int3
415218:	cc                   	int3
415219:	cc                   	int3
41521a:	cc                   	int3
41521b:	cc                   	int3
41521c:	cc                   	int3
41521d:	cc                   	int3
41521e:	cc                   	int3
41521f:	cc                   	int3
415220:	8b ff                	mov    %edi,%edi
415222:	55                   	push   %ebp
415223:	8b ec                	mov    %esp,%ebp
415225:	8b 45 0c             	mov    0xc(%ebp),%eax
415228:	57                   	push   %edi
415229:	8b 7d 08             	mov    0x8(%ebp),%edi
41522c:	3b f8                	cmp    %eax,%edi
41522e:	74 26                	je     0x415256
415230:	56                   	push   %esi
415231:	8b 75 10             	mov    0x10(%ebp),%esi
415234:	85 f6                	test   %esi,%esi
415236:	74 1d                	je     0x415255
415238:	2b f8                	sub    %eax,%edi
41523a:	8d 9b 00 00 00 00    	lea    0x0(%ebx),%ebx
415240:	8a 08                	mov    (%eax),%cl
415242:	8d 40 01             	lea    0x1(%eax),%eax
415245:	8a 54 07 ff          	mov    -0x1(%edi,%eax,1),%dl
415249:	88 4c 07 ff          	mov    %cl,-0x1(%edi,%eax,1)
41524d:	88 50 ff             	mov    %dl,-0x1(%eax)
415250:	83 ee 01             	sub    $0x1,%esi
415253:	75 eb                	jne    0x415240
415255:	5e                   	pop    %esi
415256:	5f                   	pop    %edi
415257:	5d                   	pop    %ebp
415258:	c3                   	ret
415259:	cc                   	int3
41525a:	cc                   	int3
41525b:	cc                   	int3
41525c:	cc                   	int3
41525d:	cc                   	int3
41525e:	cc                   	int3
41525f:	cc                   	int3
415260:	8b ff                	mov    %edi,%edi
415262:	55                   	push   %ebp
415263:	8b ec                	mov    %esp,%ebp
415265:	81 ec 1c 01 00 00    	sub    $0x11c,%esp
41526b:	a1 0c 30 42 00       	mov    0x42300c,%eax
415270:	33 c5                	xor    %ebp,%eax
415272:	89 45 fc             	mov    %eax,-0x4(%ebp)
415275:	8b 4d 08             	mov    0x8(%ebp),%ecx
415278:	8b 55 0c             	mov    0xc(%ebp),%edx
41527b:	89 8d fc fe ff ff    	mov    %ecx,-0x104(%ebp)
415281:	56                   	push   %esi
415282:	8b 75 14             	mov    0x14(%ebp),%esi
415285:	89 b5 00 ff ff ff    	mov    %esi,-0x100(%ebp)
41528b:	57                   	push   %edi
41528c:	8b 7d 10             	mov    0x10(%ebp),%edi
41528f:	89 bd 04 ff ff ff    	mov    %edi,-0xfc(%ebp)
415295:	85 c9                	test   %ecx,%ecx
415297:	75 24                	jne    0x4152bd
415299:	85 d2                	test   %edx,%edx
41529b:	74 20                	je     0x4152bd
41529d:	e8 65 2a ff ff       	call   0x407d07
4152a2:	c7 00 16 00 00 00    	movl   $0x16,(%eax)
4152a8:	e8 81 29 ff ff       	call   0x407c2e
4152ad:	5f                   	pop    %edi
4152ae:	5e                   	pop    %esi
4152af:	8b 4d fc             	mov    -0x4(%ebp),%ecx
4152b2:	33 cd                	xor    %ebp,%ecx
4152b4:	e8 9d dc fe ff       	call   0x402f56
4152b9:	8b e5                	mov    %ebp,%esp
4152bb:	5d                   	pop    %ebp
4152bc:	c3                   	ret
4152bd:	85 ff                	test   %edi,%edi
4152bf:	74 dc                	je     0x41529d
4152c1:	85 f6                	test   %esi,%esi
4152c3:	74 d8                	je     0x41529d
4152c5:	c7 85 f8 fe ff ff 00 	movl   $0x0,-0x108(%ebp)
4152cc:	00 00 00
4152cf:	83 fa 02             	cmp    $0x2,%edx
4152d2:	0f 82 12 03 00 00    	jb     0x4155ea
4152d8:	4a                   	dec    %edx
4152d9:	0f af d7             	imul   %edi,%edx
4152dc:	53                   	push   %ebx
4152dd:	03 d1                	add    %ecx,%edx
4152df:	89 95 08 ff ff ff    	mov    %edx,-0xf8(%ebp)
4152e5:	8b c2                	mov    %edx,%eax
4152e7:	33 d2                	xor    %edx,%edx
4152e9:	2b c1                	sub    %ecx,%eax
4152eb:	f7 f7                	div    %edi
4152ed:	8d 58 01             	lea    0x1(%eax),%ebx
4152f0:	83 fb 08             	cmp    $0x8,%ebx
4152f3:	77 16                	ja     0x41530b
4152f5:	56                   	push   %esi
4152f6:	57                   	push   %edi
4152f7:	ff b5 08 ff ff ff    	push   -0xf8(%ebp)
4152fd:	51                   	push   %ecx
4152fe:	e8 7d fe ff ff       	call   0x415180
415303:	83 c4 10             	add    $0x10,%esp
415306:	e9 b7 02 00 00       	jmp    0x4155c2
41530b:	d1 eb                	shr    $1,%ebx
41530d:	0f af df             	imul   %edi,%ebx
415310:	03 d9                	add    %ecx,%ebx
415312:	53                   	push   %ebx
415313:	51                   	push   %ecx
415314:	8b ce                	mov    %esi,%ecx
415316:	89 9d f0 fe ff ff    	mov    %ebx,-0x110(%ebp)
41531c:	ff 15 a8 b1 41 00    	call   *0x41b1a8
415322:	ff d6                	call   *%esi
415324:	83 c4 08             	add    $0x8,%esp
415327:	85 c0                	test   %eax,%eax
415329:	7e 10                	jle    0x41533b
41532b:	57                   	push   %edi