40634e:	cc                   	int3
40634f:	cc                   	int3
406350:	68 90 2c 42 00       	push   $0x422c90
406355:	e8 bd b9 01 00       	call   0x421d17
40635a:	59                   	pop    %ecx
40635b:	c3                   	ret
40635c:	cc                   	int3
40635d:	cc                   	int3
40635e:	cc                   	int3
40635f:	cc                   	int3
406360:	68 b0 2c 42 00       	push   $0x422cb0
406365:	e8 ad b9 01 00       	call   0x421d17
40636a:	59                   	pop    %ecx
40636b:	c3                   	ret
40636c:	cc                   	int3
40636d:	cc                   	int3
40636e:	cc                   	int3
40636f:	cc                   	int3
406370:	8b ff                	mov    %edi,%edi
406372:	55                   	push   %ebp
406373:	8b ec                	mov    %esp,%ebp
406375:	56                   	push   %esi
406376:	8b f2                	mov    %edx,%esi
406378:	85 c9                	test   %ecx,%ecx
40637a:	75 14                	jne    0x406390
40637c:	ff 15 c0 63 42 00    	call   *0x4263c0
406382:	6a 16                	push   $0x16
406384:	5e                   	pop    %esi
406385:	89 30                	mov    %esi,(%eax)
406387:	e8 62 c4 01 00       	call   0x4227ee
40638c:	8b c6                	mov    %esi,%eax
40638e:	eb 55                	jmp    0x4063e5
406390:	57                   	push   %edi
406391:	8b 7d 08             	mov    0x8(%ebp),%edi
406394:	85 ff                	test   %edi,%edi
406396:	74 16                	je     0x4063ae
406398:	3b 75 0c             	cmp    0xc(%ebp),%esi
40639b:	72 11                	jb     0x4063ae
40639d:	ff 75 0c             	push   0xc(%ebp)
4063a0:	57                   	push   %edi
4063a1:	51                   	push   %ecx
4063a2:	e8 dc c7 01 00       	call   0x422b83
4063a7:	83 c4 0c             	add    $0xc,%esp
4063aa:	33 c0                	xor    %eax,%eax
4063ac:	eb 36                	jmp    0x4063e4
4063ae:	56                   	push   %esi
4063af:	6a 00                	push   $0x0
4063b1:	51                   	push   %ecx
4063b2:	e8 91 c4 01 00       	call   0x422848
4063b7:	83 c4 0c             	add    $0xc,%esp
4063ba:	85 ff                	test   %edi,%edi
4063bc:	75 0a                	jne    0x4063c8
4063be:	ff 15 c0 63 42 00    	call   *0x4263c0
4063c4:	6a 16                	push   $0x16
4063c6:	eb 0d                	jmp    0x4063d5
4063c8:	3b 75 0c             	cmp    0xc(%ebp),%esi
4063cb:	73 14                	jae    0x4063e1
4063cd:	ff 15 c0 63 42 00    	call   *0x4263c0
4063d3:	6a 22                	push   $0x22
4063d5:	5e                   	pop    %esi
4063d6:	89 30                	mov    %esi,(%eax)
4063d8:	e8 11 c4 01 00       	call   0x4227ee
4063dd:	8b c6                	mov    %esi,%eax
4063df:	eb 03                	jmp    0x4063e4
4063e1:	6a 16                	push   $0x16
4063e3:	58                   	pop    %eax
4063e4:	5f                   	pop    %edi
4063e5:	5e                   	pop    %esi
4063e6:	5d                   	pop    %ebp
4063e7:	c3                   	ret
4063e8:	8b ff                	mov    %edi,%edi
4063ea:	55                   	push   %ebp
4063eb:	8b ec                	mov    %esp,%ebp
4063ed:	56                   	push   %esi
4063ee:	33 f6                	xor    %esi,%esi
4063f0:	85 d2                	test   %edx,%edx
4063f2:	74 08                	je     0x4063fc
4063f4:	81 fa ff ff ff 7f    	cmp    $0x7fffffff,%edx
4063fa:	76 05                	jbe    0x406401
4063fc:	be 57 00 07 80       	mov    $0x80070057,%esi
406401:	85 f6                	test   %esi,%esi
406403:	78 41                	js     0x406446
406405:	8b f2                	mov    %edx,%esi
406407:	85 d2                	test   %edx,%edx
406409:	74 28                	je     0x406433
40640b:	57                   	push   %edi
40640c:	bf fe ff ff 7f       	mov    $0x7ffffffe,%edi
406411:	2b fa                	sub    %edx,%edi
406413:	8b 55 08             	mov    0x8(%ebp),%edx
406416:	2b d1                	sub    %ecx,%edx
406418:	8d 04 37             	lea    (%edi,%esi,1),%eax
40641b:	85 c0                	test   %eax,%eax
40641d:	74 0f                	je     0x40642e
40641f:	8a 04 0a             	mov    (%edx,%ecx,1),%al
406422:	84 c0                	test   %al,%al
406424:	74 08                	je     0x40642e
406426:	88 01                	mov    %al,(%ecx)
406428:	41                   	inc    %ecx
406429:	83 ee 01             	sub    $0x1,%esi
40642c:	75 ea                	jne    0x406418
40642e:	5f                   	pop    %edi
40642f:	85 f6                	test   %esi,%esi
406431:	75 01                	jne    0x406434
406433:	49                   	dec    %ecx
406434:	f7 de                	neg    %esi
406436:	1b f6                	sbb    %esi,%esi
406438:	81 e6 86 ff f8 7f    	and    $0x7ff8ff86,%esi
40643e:	81 c6 7a 00 07 80    	add    $0x8007007a,%esi
406444:	eb 04                	jmp    0x40644a
406446:	85 d2                	test   %edx,%edx
406448:	74 03                	je     0x40644d
40644a:	c6 01 00             	movb   $0x0,(%ecx)
40644d:	8b c6                	mov    %esi,%eax
40644f:	5e                   	pop    %esi
406450:	5d                   	pop    %ebp
406451:	c2 04 00             	ret    $0x4
406454:	8b ff                	mov    %edi,%edi
406456:	55                   	push   %ebp
406457:	8b ec                	mov    %esp,%ebp
406459:	33 c0                	xor    %eax,%eax
40645b:	85 d2                	test   %edx,%edx
40645d:	74 08                	je     0x406467
40645f:	81 fa ff ff ff 7f    	cmp    $0x7fffffff,%edx
406465:	76 05                	jbe    0x40646c
406467:	b8 57 00 07 80       	mov    $0x80070057,%eax
40646c:	85 c0                	test   %eax,%eax
40646e:	78 0c                	js     0x40647c
406470:	51                   	push   %ecx
406471:	ff 75 08             	push   0x8(%ebp)
406474:	51                   	push   %ecx
406475:	e8 c1 00 00 00       	call   0x40653b
40647a:	eb 09                	jmp    0x406485
40647c:	85 d2                	test   %edx,%edx
40647e:	74 05                	je     0x406485
406480:	33 d2                	xor    %edx,%edx
406482:	66 89 11             	mov    %dx,(%ecx)
406485:	5d                   	pop    %ebp
406486:	c2 04 00             	ret    $0x4
406489:	8b ff                	mov    %edi,%edi
40648b:	55                   	push   %ebp
40648c:	8b ec                	mov    %esp,%ebp
40648e:	53                   	push   %ebx
40648f:	56                   	push   %esi
406490:	57                   	push   %edi
406491:	33 ff                	xor    %edi,%edi
406493:	bb 57 00 07 80       	mov    $0x80070057,%ebx
406498:	8b f7                	mov    %edi,%esi
40649a:	85 d2                	test   %edx,%edx
40649c:	74 08                	je     0x4064a6
40649e:	81 fa ff ff ff 7f    	cmp    $0x7fffffff,%edx
4064a4:	76 02                	jbe    0x4064a8
4064a6:	8b f3                	mov    %ebx,%esi
4064a8:	85 f6                	test   %esi,%esi
4064aa:	78 42                	js     0x4064ee
4064ac:	8b f2                	mov    %edx,%esi
4064ae:	8b c1                	mov    %ecx,%eax
4064b0:	85 d2                	test   %edx,%edx
4064b2:	74 0d                	je     0x4064c1
4064b4:	66 39 38             	cmp    %di,(%eax)
4064b7:	74 08                	je     0x4064c1
4064b9:	83 c0 02             	add    $0x2,%eax
4064bc:	83 ee 01             	sub    $0x1,%esi
4064bf:	75 f3                	jne    0x4064b4
4064c1:	8b fe                	mov    %esi,%edi
4064c3:	8b c2                	mov    %edx,%eax
4064c5:	f7 de                	neg    %esi
4064c7:	1b f6                	sbb    %esi,%esi
4064c9:	2b c7                	sub    %edi,%eax
4064cb:	81 e6 a9 ff f8 7f    	and    $0x7ff8ffa9,%esi
4064d1:	03 f3                	add    %ebx,%esi
4064d3:	f7 df                	neg    %edi
4064d5:	1b ff                	sbb    %edi,%edi
4064d7:	23 f8                	and    %eax,%edi
4064d9:	85 f6                	test   %esi,%esi
4064db:	78 11                	js     0x4064ee
4064dd:	51                   	push   %ecx
4064de:	ff 75 08             	push   0x8(%ebp)
4064e1:	2b d7                	sub    %edi,%edx
4064e3:	51                   	push   %ecx
4064e4:	8d 0c 79             	lea    (%ecx,%edi,2),%ecx
4064e7:	e8 4f 00 00 00       	call   0x40653b
4064ec:	8b f0                	mov    %eax,%esi
4064ee:	5f                   	pop    %edi
4064ef:	8b c6                	mov    %esi,%eax
4064f1:	5e                   	pop    %esi
4064f2:	5b                   	pop    %ebx
4064f3:	5d                   	pop    %ebp
4064f4:	c2 04 00             	ret    $0x4
4064f7:	8b ff                	mov    %edi,%edi
4064f9:	55                   	push   %ebp
4064fa:	8b ec                	mov    %esp,%ebp
4064fc:	8b 45 0c             	mov    0xc(%ebp),%eax
4064ff:	33 c9                	xor    %ecx,%ecx
406501:	85 c0                	test   %eax,%eax
406503:	74 07                	je     0x40650c
406505:	3d ff ff ff 7f       	cmp    $0x7fffffff,%eax
40650a:	76 05                	jbe    0x406511
40650c:	b9 57 00 07 80       	mov    $0x80070057,%ecx
406511:	85 c9                	test   %ecx,%ecx
406513:	78 16                	js     0x40652b
406515:	8d 4d 14             	lea    0x14(%ebp),%ecx
406518:	8b d0                	mov    %eax,%edx
40651a:	51                   	push   %ecx
40651b:	ff 75 10             	push   0x10(%ebp)
40651e:	51                   	push   %ecx
40651f:	8b 4d 08             	mov    0x8(%ebp),%ecx
406522:	e8 64 00 00 00       	call   0x40658b
406527:	8b c8                	mov    %eax,%ecx
406529:	eb 0c                	jmp    0x406537
40652b:	85 c0                	test   %eax,%eax
40652d:	74 08                	je     0x406537
40652f:	8b 45 08             	mov    0x8(%ebp),%eax
406532:	33 d2                	xor    %edx,%edx
406534:	66 89 10             	mov    %dx,(%eax)
406537:	8b c1                	mov    %ecx,%eax
406539:	5d                   	pop    %ebp
40653a:	c3                   	ret
40653b:	8b ff                	mov    %edi,%edi
40653d:	55                   	push   %ebp
40653e:	8b ec                	mov    %esp,%ebp
406540:	85 d2                	test   %edx,%edx
406542:	74 2b                	je     0x40656f
406544:	8b 45 0c             	mov    0xc(%ebp),%eax
406547:	56                   	push   %esi
406548:	57                   	push   %edi
406549:	be fe ff ff 7f       	mov    $0x7ffffffe,%esi
40654e:	2b c1                	sub    %ecx,%eax
406550:	85 f6                	test   %esi,%esi
406552:	74 15                	je     0x406569
406554:	0f b7 3c 08          	movzwl (%eax,%ecx,1),%edi
406558:	66 85 ff             	test   %di,%di
40655b:	74 0c                	je     0x406569
40655d:	66 89 39             	mov    %di,(%ecx)
406560:	83 c1 02             	add    $0x2,%ecx
406563:	4e                   	dec    %esi
406564:	83 ea 01             	sub    $0x1,%edx
406567:	75 e7                	jne    0x406550
406569:	5f                   	pop    %edi
40656a:	5e                   	pop    %esi
40656b:	85 d2                	test   %edx,%edx
40656d:	75 03                	jne    0x406572
40656f:	83 e9 02             	sub    $0x2,%ecx
406572:	f7 da                	neg    %edx
406574:	1b d2                	sbb    %edx,%edx
406576:	81 e2 86 ff f8 7f    	and    $0x7ff8ff86,%edx
40657c:	33 c0                	xor    %eax,%eax
40657e:	66 89 01             	mov    %ax,(%ecx)
406581:	8d 82 7a 00 07 80    	lea    -0x7ff8ff86(%edx),%eax
406587:	5d                   	pop    %ebp
406588:	c2 0c 00             	ret    $0xc
40658b:	8b ff                	mov    %edi,%edi
40658d:	55                   	push   %ebp
40658e:	8b ec                	mov    %esp,%ebp
406590:	53                   	push   %ebx
406591:	56                   	push   %esi
406592:	57                   	push   %edi
406593:	ff 75 10             	push   0x10(%ebp)
406596:	8d 72 ff             	lea    -0x1(%edx),%esi
406599:	8b f9                	mov    %ecx,%edi
40659b:	ff 75 0c             	push   0xc(%ebp)
40659e:	33 db                	xor    %ebx,%ebx
4065a0:	56                   	push   %esi
4065a1:	57                   	push   %edi
4065a2:	e8 e0 c2 01 00       	call   0x422887
4065a7:	83 c4 10             	add    $0x10,%esp
4065aa:	85 c0                	test   %eax,%eax
4065ac:	78 08                	js     0x4065b6
4065ae:	3b c6                	cmp    %esi,%eax
4065b0:	77 04                	ja     0x4065b6
4065b2:	75 0d                	jne    0x4065c1
4065b4:	eb 05                	jmp    0x4065bb
4065b6:	bb 7a 00 07 80       	mov    $0x8007007a,%ebx
4065bb:	33 c0                	xor    %eax,%eax
4065bd:	66 89 04 77          	mov    %ax,(%edi,%esi,2)
4065c1:	5f                   	pop    %edi
4065c2:	5e                   	pop    %esi
4065c3:	8b c3                	mov    %ebx,%eax
4065c5:	5b                   	pop    %ebx
4065c6:	5d                   	pop    %ebp
4065c7:	c2 0c 00             	ret    $0xc
4065ca:	8b ff                	mov    %edi,%edi
4065cc:	55                   	push   %ebp
4065cd:	8b ec                	mov    %esp,%ebp
4065cf:	8b 45 0c             	mov    0xc(%ebp),%eax
4065d2:	56                   	push   %esi
4065d3:	8b 75 08             	mov    0x8(%ebp),%esi
4065d6:	2b c6                	sub    %esi,%eax
4065d8:	d1 f8                	sar    $1,%eax
4065da:	74 1a                	je     0x4065f6
4065dc:	3d ff ff ff 7f       	cmp    $0x7fffffff,%eax
4065e1:	77 13                	ja     0x4065f6
4065e3:	8d 4d 14             	lea    0x14(%ebp),%ecx
4065e6:	8b d0                	mov    %eax,%edx
4065e8:	51                   	push   %ecx
4065e9:	ff 75 10             	push   0x10(%ebp)
4065ec:	51                   	push   %ecx
4065ed:	8b ce                	mov    %esi,%ecx
4065ef:	e8 97 ff ff ff       	call   0x40658b
4065f4:	eb 09                	jmp    0x4065ff
4065f6:	85 c0                	test   %eax,%eax
4065f8:	74 05                	je     0x4065ff
4065fa:	33 c0                	xor    %eax,%eax
4065fc:	66 89 06             	mov    %ax,(%esi)
4065ff:	39 75 0c             	cmp    %esi,0xc(%ebp)
406602:	74 17                	je     0x40661b
406604:	8b ce                	mov    %esi,%ecx
406606:	8d 51 02             	lea    0x2(%ecx),%edx
406609:	66 8b 01             	mov    (%ecx),%ax
40660c:	83 c1 02             	add    $0x2,%ecx
40660f:	66 85 c0             	test   %ax,%ax
406612:	75 f5                	jne    0x406609
406614:	2b ca                	sub    %edx,%ecx
406616:	d1 f9                	sar    $1,%ecx
406618:	8d 34 4e             	lea    (%esi,%ecx,2),%esi
40661b:	8b c6                	mov    %esi,%eax
40661d:	5e                   	pop    %esi
40661e:	5d                   	pop    %ebp
40661f:	c3                   	ret
406620:	8b ff                	mov    %edi,%edi
406622:	55                   	push   %ebp
406623:	8b ec                	mov    %esp,%ebp
406625:	81 ec 0c 02 00 00    	sub    $0x20c,%esp
40662b:	a1 10 42 42 00       	mov    0x424210,%eax
406630:	33 c5                	xor    %ebp,%eax
406632:	89 45 fc             	mov    %eax,-0x4(%ebp)
406635:	56                   	push   %esi
406636:	8b c2                	mov    %edx,%eax
406638:	8b f1                	mov    %ecx,%esi
40663a:	89 85 f4 fd ff ff    	mov    %eax,-0x20c(%ebp)
406640:	57                   	push   %edi
406641:	8b 7d 08             	mov    0x8(%ebp),%edi
406644:	85 c0                	test   %eax,%eax
406646:	0f 84 db 01 00 00    	je     0x406827
40664c:	85 f6                	test   %esi,%esi
40664e:	0f 84 d3 01 00 00    	je     0x406827
406654:	53                   	push   %ebx
406655:	8b 1d a0 4c 42 00    	mov    0x424ca0,%ebx
40665b:	33 c9                	xor    %ecx,%ecx
40665d:	66 89 0e             	mov    %cx,(%esi)
406660:	85 db                	test   %ebx,%ebx
406662:	74 21                	je     0x406685
406664:	38 0d ac 4c 42 00    	cmp    %cl,0x424cac
40666a:	74 19                	je     0x406685
40666c:	50                   	push   %eax
40666d:	56                   	push   %esi
40666e:	57                   	push   %edi
40666f:	8b cb                	mov    %ebx,%ecx
406671:	ff 15 78 64 42 00    	call   *0x426478
406677:	ff d3                	call   *%ebx
406679:	0f b7 06             	movzwl (%esi),%eax