406170:	2b f7                	sub    %edi,%esi
406172:	d1 fe                	sar    $1,%esi
406174:	8b c6                	mov    %esi,%eax
406176:	eb 03                	jmp    0x40617b
406178:	83 c8 ff             	or     $0xffffffff,%eax
40617b:	8b 4d fc             	mov    -0x4(%ebp),%ecx
40617e:	5f                   	pop    %edi
40617f:	5e                   	pop    %esi
406180:	33 cd                	xor    %ebp,%ecx
406182:	5b                   	pop    %ebx
406183:	e8 7a 98 03 00       	call   0x43fa02
406188:	c9                   	leave
406189:	c3                   	ret
40618a:	55                   	push   %ebp
40618b:	8b ec                	mov    %esp,%ebp
40618d:	83 7d 18 00          	cmpl   $0x0,0x18(%ebp)
406191:	53                   	push   %ebx
406192:	56                   	push   %esi
406193:	74 3a                	je     0x4061cf
406195:	8b 45 0c             	mov    0xc(%ebp),%eax
406198:	85 c0                	test   %eax,%eax
40619a:	74 33                	je     0x4061cf
40619c:	8b 4d 10             	mov    0x10(%ebp),%ecx
40619f:	48                   	dec    %eax
4061a0:	8b 5d 08             	mov    0x8(%ebp),%ebx
4061a3:	3b c1                	cmp    %ecx,%eax
4061a5:	0f 42 c8             	cmovb  %eax,%ecx
4061a8:	8d 34 4b             	lea    (%ebx,%ecx,2),%esi
4061ab:	eb 07                	jmp    0x4061b4
4061ad:	3b f3                	cmp    %ebx,%esi
4061af:	74 1e                	je     0x4061cf
4061b1:	83 ee 02             	sub    $0x2,%esi
4061b4:	56                   	push   %esi
4061b5:	ff 75 18             	push   0x18(%ebp)
4061b8:	ff 75 14             	push   0x14(%ebp)
4061bb:	e8 10 ad 01 00       	call   0x420ed0
4061c0:	83 c4 0c             	add    $0xc,%esp
4061c3:	85 c0                	test   %eax,%eax
4061c5:	74 e6                	je     0x4061ad
4061c7:	2b f3                	sub    %ebx,%esi
4061c9:	d1 fe                	sar    $1,%esi
4061cb:	8b c6                	mov    %esi,%eax
4061cd:	eb 03                	jmp    0x4061d2
4061cf:	83 c8 ff             	or     $0xffffffff,%eax
4061d2:	5e                   	pop    %esi
4061d3:	5b                   	pop    %ebx
4061d4:	5d                   	pop    %ebp
4061d5:	c3                   	ret
4061d6:	55                   	push   %ebp
4061d7:	8b ec                	mov    %esp,%ebp
4061d9:	57                   	push   %edi
4061da:	8b 7d 18             	mov    0x18(%ebp),%edi
4061dd:	85 ff                	test   %edi,%edi
4061df:	75 0c                	jne    0x4061ed
4061e1:	8b 45 10             	mov    0x10(%ebp),%eax
4061e4:	39 45 0c             	cmp    %eax,0xc(%ebp)
4061e7:	0f 42 45 0c          	cmovb  0xc(%ebp),%eax
4061eb:	eb 52                	jmp    0x40623f
4061ed:	8b 4d 0c             	mov    0xc(%ebp),%ecx
4061f0:	53                   	push   %ebx
4061f1:	56                   	push   %esi
4061f2:	3b f9                	cmp    %ecx,%edi
4061f4:	77 44                	ja     0x40623a
4061f6:	8b 45 10             	mov    0x10(%ebp),%eax
4061f9:	2b cf                	sub    %edi,%ecx
4061fb:	8b 5d 08             	mov    0x8(%ebp),%ebx
4061fe:	3b c8                	cmp    %eax,%ecx
406200:	0f 42 c1             	cmovb  %ecx,%eax
406203:	8d 34 43             	lea    (%ebx,%eax,2),%esi
406206:	8b 45 14             	mov    0x14(%ebp),%eax
406209:	0f b7 08             	movzwl (%eax),%ecx
40620c:	89 4d 18             	mov    %ecx,0x18(%ebp)
40620f:	66 39 0e             	cmp    %cx,(%esi)
406212:	75 15                	jne    0x406229
406214:	57                   	push   %edi
406215:	50                   	push   %eax
406216:	56                   	push   %esi
406217:	e8 e1 97 01 00       	call   0x41f9fd
40621c:	83 c4 0c             	add    $0xc,%esp
40621f:	85 c0                	test   %eax,%eax
406221:	74 0f                	je     0x406232
406223:	8b 45 14             	mov    0x14(%ebp),%eax
406226:	8b 4d 18             	mov    0x18(%ebp),%ecx
406229:	3b f3                	cmp    %ebx,%esi
40622b:	74 0d                	je     0x40623a
40622d:	83 ee 02             	sub    $0x2,%esi
406230:	eb dd                	jmp    0x40620f
406232:	2b f3                	sub    %ebx,%esi
406234:	d1 fe                	sar    $1,%esi
406236:	8b c6                	mov    %esi,%eax
406238:	eb 03                	jmp    0x40623d
40623a:	83 c8 ff             	or     $0xffffffff,%eax
40623d:	5e                   	pop    %esi
40623e:	5b                   	pop    %ebx
40623f:	5f                   	pop    %edi
406240:	5d                   	pop    %ebp
406241:	c3                   	ret
406242:	55                   	push   %ebp
406243:	8b ec                	mov    %esp,%ebp
406245:	8b 45 0c             	mov    0xc(%ebp),%eax
406248:	85 c0                	test   %eax,%eax
40624a:	74 27                	je     0x406273
40624c:	8b 4d 10             	mov    0x10(%ebp),%ecx
40624f:	48                   	dec    %eax
406250:	8b 55 08             	mov    0x8(%ebp),%edx
406253:	3b c1                	cmp    %ecx,%eax
406255:	0f 42 c8             	cmovb  %eax,%ecx
406258:	8d 04 4a             	lea    (%edx,%ecx,2),%eax
40625b:	66 8b 4d 14          	mov    0x14(%ebp),%cx
40625f:	eb 07                	jmp    0x406268
406261:	3b c2                	cmp    %edx,%eax
406263:	74 0e                	je     0x406273
406265:	83 e8 02             	sub    $0x2,%eax
406268:	66 39 08             	cmp    %cx,(%eax)
40626b:	75 f4                	jne    0x406261
40626d:	2b c2                	sub    %edx,%eax
40626f:	d1 f8                	sar    $1,%eax
406271:	5d                   	pop    %ebp
406272:	c3                   	ret
406273:	83 c8 ff             	or     $0xffffffff,%eax
406276:	5d                   	pop    %ebp
406277:	c3                   	ret
406278:	55                   	push   %ebp
406279:	8b ec                	mov    %esp,%ebp
40627b:	8b 45 0c             	mov    0xc(%ebp),%eax
40627e:	56                   	push   %esi
40627f:	8b 75 08             	mov    0x8(%ebp),%esi
406282:	6a 0a                	push   $0xa
406284:	33 d2                	xor    %edx,%edx
406286:	83 ee 02             	sub    $0x2,%esi
406289:	59                   	pop    %ecx
40628a:	f7 f1                	div    %ecx
40628c:	8d 4a 30             	lea    0x30(%edx),%ecx
40628f:	66 89 0e             	mov    %cx,(%esi)
406292:	85 c0                	test   %eax,%eax
406294:	75 ec                	jne    0x406282
406296:	8b c6                	mov    %esi,%eax
406298:	5e                   	pop    %esi
406299:	5d                   	pop    %ebp
40629a:	c3                   	ret
40629b:	55                   	push   %ebp
40629c:	8b ec                	mov    %esp,%ebp
40629e:	51                   	push   %ecx
40629f:	51                   	push   %ecx
4062a0:	ff 75 10             	push   0x10(%ebp)
4062a3:	51                   	push   %ecx
4062a4:	ff 75 10             	push   0x10(%ebp)
4062a7:	ff 75 0c             	push   0xc(%ebp)
4062aa:	ff 75 08             	push   0x8(%ebp)
4062ad:	e8 cd 02 00 00       	call   0x40657f
4062b2:	83 c4 18             	add    $0x18,%esp
4062b5:	c9                   	leave
4062b6:	c2 0c 00             	ret    $0xc
4062b9:	55                   	push   %ebp
4062ba:	8b ec                	mov    %esp,%ebp
4062bc:	51                   	push   %ecx
4062bd:	51                   	push   %ecx
4062be:	ff 75 10             	push   0x10(%ebp)
4062c1:	51                   	push   %ecx
4062c2:	ff 75 10             	push   0x10(%ebp)
4062c5:	ff 75 0c             	push   0xc(%ebp)
4062c8:	ff 75 08             	push   0x8(%ebp)
4062cb:	e8 d5 02 00 00       	call   0x4065a5
4062d0:	83 c4 18             	add    $0x18,%esp
4062d3:	c9                   	leave
4062d4:	c2 0c 00             	ret    $0xc
4062d7:	6a 04                	push   $0x4
4062d9:	b8 01 a5 48 00       	mov    $0x48a501,%eax
4062de:	e8 67 97 03 00       	call   0x43fa4a
4062e3:	c7 45 fc 01 00 00 00 	movl   $0x1,-0x4(%ebp)
4062ea:	8d 45 70             	lea    0x70(%ebp),%eax
4062ed:	51                   	push   %ecx
4062ee:	ff b5 d8 00 00 00    	push   0xd8(%ebp)
4062f4:	83 ec 68             	sub    $0x68,%esp
4062f7:	8b cc                	mov    %esp,%ecx
4062f9:	89 a5 d8 00 00 00    	mov    %esp,0xd8(%ebp)
4062ff:	50                   	push   %eax
406300:	e8 8f 55 00 00       	call   0x40b894
406305:	c6 45 fc 02          	movb   $0x2,-0x4(%ebp)
406309:	83 ec 68             	sub    $0x68,%esp
40630c:	8d 45 08             	lea    0x8(%ebp),%eax
40630f:	89 65 f0             	mov    %esp,-0x10(%ebp)
406312:	8b cc                	mov    %esp,%ecx
406314:	50                   	push   %eax
406315:	e8 7a 55 00 00       	call   0x40b894
40631a:	c6 45 fc 03          	movb   $0x3,-0x4(%ebp)
40631e:	c6 45 fc 01          	movb   $0x1,-0x4(%ebp)
406322:	e8 8c 01 00 00       	call   0x4064b3
406327:	81 c4 d8 00 00 00    	add    $0xd8,%esp
40632d:	8b f0                	mov    %eax,%esi
40632f:	c6 45 fc 00          	movb   $0x0,-0x4(%ebp)
406333:	8d 4d 08             	lea    0x8(%ebp),%ecx
406336:	e8 92 80 00 00       	call   0x40e3cd
40633b:	83 4d fc ff          	orl    $0xffffffff,-0x4(%ebp)
40633f:	8d 4d 70             	lea    0x70(%ebp),%ecx
406342:	e8 86 80 00 00       	call   0x40e3cd
406347:	8b c6                	mov    %esi,%eax
406349:	e8 c5 96 03 00       	call   0x43fa13
40634e:	c2 d4 00             	ret    $0xd4
406351:	55                   	push   %ebp
406352:	8b ec                	mov    %esp,%ebp
406354:	8b 55 0c             	mov    0xc(%ebp),%edx
406357:	8b 45 08             	mov    0x8(%ebp),%eax
40635a:	85 d2                	test   %edx,%edx
40635c:	74 11                	je     0x40636f
40635e:	56                   	push   %esi
40635f:	8b 75 10             	mov    0x10(%ebp),%esi
406362:	8b 0e                	mov    (%esi),%ecx
406364:	89 08                	mov    %ecx,(%eax)
406366:	83 c0 04             	add    $0x4,%eax
406369:	83 ea 01             	sub    $0x1,%edx
40636c:	75 f4                	jne    0x406362
40636e:	5e                   	pop    %esi
40636f:	5d                   	pop    %ebp
406370:	c3                   	ret
406371:	55                   	push   %ebp
406372:	8b ec                	mov    %esp,%ebp
406374:	51                   	push   %ecx
406375:	51                   	push   %ecx
406376:	8d 45 f8             	lea    -0x8(%ebp),%eax
406379:	50                   	push   %eax
40637a:	8d 45 f8             	lea    -0x8(%ebp),%eax
40637d:	50                   	push   %eax
40637e:	8d 45 ff             	lea    -0x1(%ebp),%eax
406381:	50                   	push   %eax
406382:	e8 ee e6 ff ff       	call   0x404a75
406387:	ff 75 10             	push   0x10(%ebp)
40638a:	ff 75 0c             	push   0xc(%ebp)
40638d:	ff 75 08             	push   0x8(%ebp)
406390:	e8 e9 ce ff ff       	call   0x40327e
406395:	83 c4 18             	add    $0x18,%esp
406398:	c9                   	leave
406399:	c3                   	ret
40639a:	55                   	push   %ebp
40639b:	8b ec                	mov    %esp,%ebp
40639d:	51                   	push   %ecx
40639e:	51                   	push   %ecx
40639f:	8d 45 f8             	lea    -0x8(%ebp),%eax
4063a2:	50                   	push   %eax
4063a3:	8d 45 f8             	lea    -0x8(%ebp),%eax
4063a6:	50                   	push   %eax
4063a7:	8d 45 ff             	lea    -0x1(%ebp),%eax
4063aa:	50                   	push   %eax
4063ab:	e8 d0 e6 ff ff       	call   0x404a80
4063b0:	ff 75 10             	push   0x10(%ebp)
4063b3:	ff 75 0c             	push   0xc(%ebp)
4063b6:	ff 75 08             	push   0x8(%ebp)
4063b9:	e8 e2 ce ff ff       	call   0x4032a0
4063be:	83 c4 18             	add    $0x18,%esp
4063c1:	c9                   	leave
4063c2:	c3                   	ret
4063c3:	55                   	push   %ebp
4063c4:	8b ec                	mov    %esp,%ebp
4063c6:	51                   	push   %ecx
4063c7:	51                   	push   %ecx
4063c8:	8d 45 f8             	lea    -0x8(%ebp),%eax
4063cb:	50                   	push   %eax
4063cc:	8d 45 f8             	lea    -0x8(%ebp),%eax
4063cf:	50                   	push   %eax
4063d0:	8d 45 ff             	lea    -0x1(%ebp),%eax
4063d3:	50                   	push   %eax
4063d4:	e8 b2 e6 ff ff       	call   0x404a8b
4063d9:	ff 75 10             	push   0x10(%ebp)
4063dc:	ff 75 0c             	push   0xc(%ebp)
4063df:	ff 75 08             	push   0x8(%ebp)
4063e2:	e8 db ce ff ff       	call   0x4032c2
4063e7:	83 c4 18             	add    $0x18,%esp
4063ea:	c9                   	leave
4063eb:	c3                   	ret
4063ec:	55                   	push   %ebp
4063ed:	8b ec                	mov    %esp,%ebp
4063ef:	51                   	push   %ecx
4063f0:	51                   	push   %ecx
4063f1:	8d 45 f8             	lea    -0x8(%ebp),%eax
4063f4:	50                   	push   %eax
4063f5:	8d 45 f8             	lea    -0x8(%ebp),%eax
4063f8:	50                   	push   %eax
4063f9:	8d 45 ff             	lea    -0x1(%ebp),%eax
4063fc:	50                   	push   %eax
4063fd:	e8 94 e6 ff ff       	call   0x404a96
406402:	ff 75 10             	push   0x10(%ebp)
406405:	ff 75 0c             	push   0xc(%ebp)
406408:	ff 75 08             	push   0x8(%ebp)
40640b:	e8 d4 ce ff ff       	call   0x4032e4
406410:	83 c4 18             	add    $0x18,%esp
406413:	c9                   	leave
406414:	c3                   	ret
406415:	55                   	push   %ebp
406416:	8b ec                	mov    %esp,%ebp
406418:	51                   	push   %ecx
406419:	51                   	push   %ecx
40641a:	51                   	push   %ecx
40641b:	c6 45 fc 00          	movb   $0x0,-0x4(%ebp)
40641f:	ff 75 fc             	push   -0x4(%ebp)
406422:	ff 75 14             	push   0x14(%ebp)
406425:	ff 75 10             	push   0x10(%ebp)
406428:	ff 75 0c             	push   0xc(%ebp)
40642b:	ff 75 08             	push   0x8(%ebp)
40642e:	e8 98 01 00 00       	call   0x4065cb
406433:	83 c4 18             	add    $0x18,%esp
406436:	c9                   	leave
406437:	c3                   	ret
406438:	55                   	push   %ebp
406439:	8b ec                	mov    %esp,%ebp
40643b:	51                   	push   %ecx
40643c:	51                   	push   %ecx
40643d:	8d 45 f8             	lea    -0x8(%ebp),%eax
406440:	50                   	push   %eax
406441:	8d 45 f8             	lea    -0x8(%ebp),%eax
406444:	50                   	push   %eax
406445:	8d 45 ff             	lea    -0x1(%ebp),%eax
406448:	50                   	push   %eax
406449:	e8 69 e6 ff ff       	call   0x404ab7
40644e:	ff 75 10             	push   0x10(%ebp)
406451:	ff 75 0c             	push   0xc(%ebp)
406454:	ff 75 08             	push   0x8(%ebp)
406457:	e8 10 cf ff ff       	call   0x40336c
40645c:	83 c4 18             	add    $0x18,%esp
40645f:	c9                   	leave
406460:	c3                   	ret
406461:	55                   	push   %ebp
406462:	8b ec                	mov    %esp,%ebp
406464:	51                   	push   %ecx
406465:	51                   	push   %ecx
406466:	8d 45 f8             	lea    -0x8(%ebp),%eax
406469:	50                   	push   %eax
40646a:	8d 45 f8             	lea    -0x8(%ebp),%eax
40646d:	50                   	push   %eax
40646e:	8d 45 ff             	lea    -0x1(%ebp),%eax
406471:	50                   	push   %eax
406472:	e8 e8 e5 ff ff       	call   0x404a5f
406477:	ff 75 10             	push   0x10(%ebp)
40647a:	ff 75 0c             	push   0xc(%ebp)
40647d:	ff 75 08             	push   0x8(%ebp)
406480:	e8 09 cf ff ff       	call   0x40338e
406485:	83 c4 18             	add    $0x18,%esp
406488:	c9                   	leave
406489:	c3                   	ret
40648a:	55                   	push   %ebp
40648b:	8b ec                	mov    %esp,%ebp
40648d:	51                   	push   %ecx
40648e:	51                   	push   %ecx
40648f:	8d 45 f8             	lea    -0x8(%ebp),%eax
406492:	50                   	push   %eax
406493:	8d 45 f8             	lea    -0x8(%ebp),%eax
406496:	50                   	push   %eax
406497:	8d 45 ff             	lea    -0x1(%ebp),%eax
40649a:	50                   	push   %eax
40649b:	e8 ca e5 ff ff       	call   0x404a6a
4064a0:	ff 75 10             	push   0x10(%ebp)