404372:	74 11                	je     0x404385
404374:	8b 4e 2c             	mov    0x2c(%esi),%ecx
404377:	8b 09                	mov    (%ecx),%ecx
404379:	8d 0c 48             	lea    (%eax,%ecx,2),%ecx
40437c:	3b c1                	cmp    %ecx,%eax
40437e:	73 05                	jae    0x404385
404380:	66 8b 00             	mov    (%eax),%ax
404383:	5e                   	pop    %esi
404384:	c3                   	ret
404385:	57                   	push   %edi
404386:	8b 3e                	mov    (%esi),%edi
404388:	8b ce                	mov    %esi,%ecx
40438a:	ff 57 14             	call   *0x14(%edi)
40438d:	50                   	push   %eax
40438e:	8b ce                	mov    %esi,%ecx
404390:	ff 57 08             	call   *0x8(%edi)
404393:	5f                   	pop    %edi
404394:	5e                   	pop    %esi
404395:	c3                   	ret
404396:	55                   	push   %ebp
404397:	8b ec                	mov    %esp,%ebp
404399:	83 ec 10             	sub    $0x10,%esp
40439c:	53                   	push   %ebx
40439d:	56                   	push   %esi
40439e:	8b f1                	mov    %ecx,%esi
4043a0:	57                   	push   %edi
4043a1:	8b 46 1c             	mov    0x1c(%esi),%eax
4043a4:	8b 00                	mov    (%eax),%eax
4043a6:	85 c0                	test   %eax,%eax
4043a8:	74 1b                	je     0x4043c5
4043aa:	8b 4e 2c             	mov    0x2c(%esi),%ecx
4043ad:	8b 09                	mov    (%ecx),%ecx
4043af:	8d 0c 48             	lea    (%eax,%ecx,2),%ecx
4043b2:	3b c1                	cmp    %ecx,%eax
4043b4:	73 0f                	jae    0x4043c5
4043b6:	8b ce                	mov    %esi,%ecx
4043b8:	e8 d5 02 00 00       	call   0x404692
4043bd:	66 8b 00             	mov    (%eax),%ax
4043c0:	e9 ea 00 00 00       	jmp    0x4044af
4043c5:	8b 46 50             	mov    0x50(%esi),%eax
4043c8:	85 c0                	test   %eax,%eax
4043ca:	75 09                	jne    0x4043d5
4043cc:	66 0d ff ff          	or     $0xffff,%ax
4043d0:	e9 da 00 00 00       	jmp    0x4044af
4043d5:	83 7e 38 00          	cmpl   $0x0,0x38(%esi)
4043d9:	75 1b                	jne    0x4043f6
4043db:	50                   	push   %eax
4043dc:	e8 e2 28 00 00       	call   0x406cc3
4043e1:	66 3d ff ff          	cmp    $0xffff,%ax
4043e5:	59                   	pop    %ecx
4043e6:	0f 85 c3 00 00 00    	jne    0x4044af
4043ec:	b8 ff ff 00 00       	mov    $0xffff,%eax
4043f1:	e9 b9 00 00 00       	jmp    0x4044af
4043f6:	8b 46 40             	mov    0x40(%esi),%eax
4043f9:	8b 4e 44             	mov    0x44(%esi),%ecx
4043fc:	89 46 3c             	mov    %eax,0x3c(%esi)
4043ff:	ff 35 68 d2 40 00    	push   0x40d268
404405:	6a 00                	push   $0x0
404407:	e8 6b f1 ff ff       	call   0x403577
40440c:	ff 76 50             	push   0x50(%esi)
40440f:	e8 8c 1e 00 00       	call   0x4062a0
404414:	83 f8 ff             	cmp    $0xffffffff,%eax
404417:	59                   	pop    %ecx
404418:	74 b2                	je     0x4043cc
40441a:	8b 4e 44             	mov    0x44(%esi),%ecx
40441d:	50                   	push   %eax
40441e:	6a 01                	push   $0x1
404420:	e8 f9 f0 ff ff       	call   0x40351e
404425:	8b 7e 44             	mov    0x44(%esi),%edi
404428:	8b 46 3c             	mov    0x3c(%esi),%eax
40442b:	8b cf                	mov    %edi,%ecx
40442d:	89 46 40             	mov    %eax,0x40(%esi)
404430:	e8 2e f3 ff ff       	call   0x403763
404435:	8b 5e 44             	mov    0x44(%esi),%ebx
404438:	8b 47 04             	mov    0x4(%edi),%eax
40443b:	8b cb                	mov    %ebx,%ecx
40443d:	89 45 f8             	mov    %eax,-0x8(%ebp)
404440:	e8 1e f3 ff ff       	call   0x403763
404445:	8b 4f 08             	mov    0x8(%edi),%ecx
404448:	8b 45 f8             	mov    -0x8(%ebp),%eax
40444b:	8d 7d f4             	lea    -0xc(%ebp),%edi
40444e:	8b 5b 04             	mov    0x4(%ebx),%ebx
404451:	57                   	push   %edi
404452:	8d 7d 00             	lea    0x0(%ebp),%edi
404455:	03 c8                	add    %eax,%ecx
404457:	57                   	push   %edi
404458:	f7 d8                	neg    %eax
40445a:	8d 7d fe             	lea    -0x2(%ebp),%edi
40445d:	1b c0                	sbb    %eax,%eax
40445f:	57                   	push   %edi
404460:	8d 7d f0             	lea    -0x10(%ebp),%edi
404463:	23 c1                	and    %ecx,%eax
404465:	8b 4e 38             	mov    0x38(%esi),%ecx
404468:	57                   	push   %edi
404469:	50                   	push   %eax
40446a:	8d 46 40             	lea    0x40(%esi),%eax
40446d:	8b 11                	mov    (%ecx),%edx
40446f:	53                   	push   %ebx
404470:	50                   	push   %eax
404471:	ff 52 10             	call   *0x10(%edx)
404474:	83 e8 00             	sub    $0x0,%eax
404477:	74 32                	je     0x4044ab
404479:	48                   	dec    %eax
40447a:	74 90                	je     0x40440c
40447c:	48                   	dec    %eax
40447d:	48                   	dec    %eax
40447e:	0f 85 48 ff ff ff    	jne    0x4043cc
404484:	8b 46 44             	mov    0x44(%esi),%eax
404487:	83 78 08 02          	cmpl   $0x2,0x8(%eax)
40448b:	0f 82 7b ff ff ff    	jb     0x40440c
404491:	8b f0                	mov    %eax,%esi
404493:	8b ce                	mov    %esi,%ecx
404495:	e8 c9 f2 ff ff       	call   0x403763
40449a:	6a 02                	push   $0x2
40449c:	8d 45 fe             	lea    -0x2(%ebp),%eax
40449f:	ff 76 04             	push   0x4(%esi)
4044a2:	50                   	push   %eax
4044a3:	e8 b8 18 00 00       	call   0x405d60
4044a8:	83 c4 0c             	add    $0xc,%esp
4044ab:	66 8b 45 fe          	mov    -0x2(%ebp),%ax
4044af:	5f                   	pop    %edi
4044b0:	5e                   	pop    %esi
4044b1:	5b                   	pop    %ebx
4044b2:	c9                   	leave
4044b3:	c3                   	ret
4044b4:	55                   	push   %ebp
4044b5:	8b ec                	mov    %esp,%ebp
4044b7:	51                   	push   %ecx
4044b8:	51                   	push   %ecx
4044b9:	8b 45 14             	mov    0x14(%ebp),%eax
4044bc:	56                   	push   %esi
4044bd:	89 45 f8             	mov    %eax,-0x8(%ebp)
4044c0:	2b c0                	sub    %eax,%eax
4044c2:	03 45 0c             	add    0xc(%ebp),%eax
4044c5:	8b f1                	mov    %ecx,%esi
4044c7:	8b 4d 18             	mov    0x18(%ebp),%ecx
4044ca:	57                   	push   %edi
4044cb:	8b f8                	mov    %eax,%edi
4044cd:	8b 46 50             	mov    0x50(%esi),%eax
4044d0:	85 c0                	test   %eax,%eax
4044d2:	89 4d fc             	mov    %ecx,-0x4(%ebp)
4044d5:	74 70                	je     0x404547
4044d7:	8d 4d f8             	lea    -0x8(%ebp),%ecx
4044da:	51                   	push   %ecx
4044db:	50                   	push   %eax
4044dc:	e8 cb 1e 00 00       	call   0x4063ac
4044e1:	59                   	pop    %ecx
4044e2:	85 c0                	test   %eax,%eax
4044e4:	59                   	pop    %ecx
4044e5:	75 60                	jne    0x404547
4044e7:	85 ff                	test   %edi,%edi
4044e9:	74 12                	je     0x4044fd
4044eb:	6a 01                	push   $0x1
4044ed:	57                   	push   %edi
4044ee:	ff 76 50             	push   0x50(%esi)
4044f1:	e8 fd 1d 00 00       	call   0x4062f3
4044f6:	83 c4 0c             	add    $0xc,%esp
4044f9:	85 c0                	test   %eax,%eax
4044fb:	75 4a                	jne    0x404547
4044fd:	8d 45 f8             	lea    -0x8(%ebp),%eax
404500:	50                   	push   %eax
404501:	ff 76 50             	push   0x50(%esi)
404504:	e8 c8 1d 00 00       	call   0x4062d1
404509:	59                   	pop    %ecx
40450a:	85 c0                	test   %eax,%eax
40450c:	59                   	pop    %ecx
40450d:	75 38                	jne    0x404547
40450f:	8b 4e 44             	mov    0x44(%esi),%ecx
404512:	85 c9                	test   %ecx,%ecx
404514:	74 13                	je     0x404529
404516:	8b 45 1c             	mov    0x1c(%ebp),%eax
404519:	89 46 40             	mov    %eax,0x40(%esi)
40451c:	ff 35 68 d2 40 00    	push   0x40d268
404522:	6a 00                	push   $0x0
404524:	e8 4e f0 ff ff       	call   0x403577
404529:	8b 45 f8             	mov    -0x8(%ebp),%eax
40452c:	83 65 0c 00          	andl   $0x0,0xc(%ebp)
404530:	89 45 14             	mov    %eax,0x14(%ebp)
404533:	8b 45 fc             	mov    -0x4(%ebp),%eax
404536:	89 45 18             	mov    %eax,0x18(%ebp)
404539:	8b 46 40             	mov    0x40(%esi),%eax
40453c:	6a 06                	push   $0x6
40453e:	89 45 1c             	mov    %eax,0x1c(%ebp)
404541:	59                   	pop    %ecx
404542:	8d 75 0c             	lea    0xc(%ebp),%esi
404545:	eb 0f                	jmp    0x404556
404547:	6a ff                	push   $0xffffffff
404549:	8d 4d 0c             	lea    0xc(%ebp),%ecx
40454c:	e8 09 f1 ff ff       	call   0x40365a
404551:	6a 06                	push   $0x6
404553:	8b f0                	mov    %eax,%esi
404555:	59                   	pop    %ecx
404556:	8b 45 08             	mov    0x8(%ebp),%eax
404559:	8b f8                	mov    %eax,%edi
40455b:	f3 a5                	rep movsl %ds:(%esi),%es:(%edi)
40455d:	5f                   	pop    %edi
40455e:	5e                   	pop    %esi
40455f:	c9                   	leave
404560:	c2 20 00             	ret    $0x20
404563:	56                   	push   %esi
404564:	8b f1                	mov    %ecx,%esi
404566:	8b 46 50             	mov    0x50(%esi),%eax
404569:	85 c0                	test   %eax,%eax
40456b:	74 1e                	je     0x40458b
40456d:	8b 4c 24 0c          	mov    0xc(%esp),%ecx
404571:	03 c9                	add    %ecx,%ecx
404573:	51                   	push   %ecx
404574:	6a 00                	push   $0x0
404576:	ff 74 24 10          	push   0x10(%esp)
40457a:	50                   	push   %eax
40457b:	e8 44 1e 00 00       	call   0x4063c4
404580:	83 c4 10             	add    $0x10,%esp
404583:	85 c0                	test   %eax,%eax
404585:	75 04                	jne    0x40458b
404587:	8b c6                	mov    %esi,%eax
404589:	eb 02                	jmp    0x40458d
40458b:	33 c0                	xor    %eax,%eax
40458d:	5e                   	pop    %esi
40458e:	c2 08 00             	ret    $0x8
404591:	56                   	push   %esi
404592:	8d 71 fc             	lea    -0x4(%ecx),%esi
404595:	8b ce                	mov    %esi,%ecx
404597:	e8 ba f5 ff ff       	call   0x403b56
40459c:	f6 44 24 08 01       	testb  $0x1,0x8(%esp)
4045a1:	74 07                	je     0x4045aa
4045a3:	56                   	push   %esi
4045a4:	e8 d8 09 00 00       	call   0x404f81
4045a9:	59                   	pop    %ecx
4045aa:	8b c6                	mov    %esi,%eax
4045ac:	5e                   	pop    %esi
4045ad:	c2 04 00             	ret    $0x4
4045b0:	56                   	push   %esi
4045b1:	8b f1                	mov    %ecx,%esi
4045b3:	e8 9e f8 ff ff       	call   0x403e56
4045b8:	f6 44 24 08 01       	testb  $0x1,0x8(%esp)
4045bd:	74 07                	je     0x4045c6
4045bf:	56                   	push   %esi
4045c0:	e8 bc 09 00 00       	call   0x404f81
4045c5:	59                   	pop    %ecx
4045c6:	8b c6                	mov    %esi,%eax
4045c8:	5e                   	pop    %esi
4045c9:	c2 04 00             	ret    $0x4
4045cc:	56                   	push   %esi
4045cd:	8d 71 f8             	lea    -0x8(%ecx),%esi
4045d0:	8b ce                	mov    %esi,%ecx
4045d2:	e8 3b f5 ff ff       	call   0x403b12
4045d7:	f6 44 24 08 01       	testb  $0x1,0x8(%esp)
4045dc:	74 07                	je     0x4045e5
4045de:	56                   	push   %esi
4045df:	e8 9d 09 00 00       	call   0x404f81
4045e4:	59                   	pop    %ecx
4045e5:	8b c6                	mov    %esi,%eax
4045e7:	5e                   	pop    %esi
4045e8:	c2 04 00             	ret    $0x4
4045eb:	56                   	push   %esi
4045ec:	8b f1                	mov    %ecx,%esi
4045ee:	e8 95 f9 ff ff       	call   0x403f88
4045f3:	f6 44 24 08 01       	testb  $0x1,0x8(%esp)
4045f8:	74 07                	je     0x404601
4045fa:	56                   	push   %esi
4045fb:	e8 81 09 00 00       	call   0x404f81
404600:	59                   	pop    %ecx
404601:	8b c6                	mov    %esi,%eax
404603:	5e                   	pop    %esi
404604:	c2 04 00             	ret    $0x4
404607:	56                   	push   %esi
404608:	8b f1                	mov    %ecx,%esi
40460a:	e8 f5 fa ff ff       	call   0x404104
40460f:	f6 44 24 08 01       	testb  $0x1,0x8(%esp)
404614:	74 07                	je     0x40461d
404616:	56                   	push   %esi
404617:	e8 65 09 00 00       	call   0x404f81
40461c:	59                   	pop    %ecx
40461d:	8b c6                	mov    %esi,%eax
40461f:	5e                   	pop    %esi
404620:	c2 04 00             	ret    $0x4
404623:	8b 44 24 04          	mov    0x4(%esp),%eax
404627:	56                   	push   %esi
404628:	8b f1                	mov    %ecx,%esi
40462a:	6a 20                	push   $0x20
40462c:	83 66 2c 00          	andl   $0x0,0x2c(%esi)
404630:	89 46 28             	mov    %eax,0x28(%esi)
404633:	e8 13 0e 00 00       	call   0x40544b
404638:	59                   	pop    %ecx
404639:	66 89 46 30          	mov    %ax,0x30(%esi)
40463d:	8b ce                	mov    %esi,%ecx
40463f:	e8 3c 05 00 00       	call   0x404b80
404644:	83 7e 28 00          	cmpl   $0x0,0x28(%esi)
404648:	75 11                	jne    0x40465b
40464a:	8b 46 04             	mov    0x4(%esi),%eax
40464d:	6a 00                	push   $0x0
40464f:	0c 04                	or     $0x4,%al
404651:	8b ce                	mov    %esi,%ecx
404653:	0c 04                	or     $0x4,%al
404655:	50                   	push   %eax
404656:	e8 db 01 00 00       	call   0x404836
40465b:	80 7c 24 0c 00       	cmpb   $0x0,0xc(%esp)
404660:	74 07                	je     0x404669
404662:	8b ce                	mov    %esi,%ecx
404664:	e8 c9 04 00 00       	call   0x404b32
404669:	5e                   	pop    %esi
40466a:	c2 08 00             	ret    $0x8
40466d:	8b 41 2c             	mov    0x2c(%ecx),%eax
404670:	8b 54 24 04          	mov    0x4(%esp),%edx
404674:	29 10                	sub    %edx,(%eax)
404676:	8b 41 1c             	mov    0x1c(%ecx),%eax
404679:	8d 0c 12             	lea    (%edx,%edx,1),%ecx
40467c:	01 08                	add    %ecx,(%eax)
40467e:	c2 04 00             	ret    $0x4
404681:	8b 41 2c             	mov    0x2c(%ecx),%eax
404684:	ff 00                	incl   (%eax)
404686:	8b 41 1c             	mov    0x1c(%ecx),%eax
404689:	83 00 fe             	addl   $0xfffffffe,(%eax)
40468c:	8b 41 1c             	mov    0x1c(%ecx),%eax
40468f:	8b 00                	mov    (%eax),%eax
404691:	c3                   	ret
404692:	8b 41 2c             	mov    0x2c(%ecx),%eax
404695:	ff 08                	decl   (%eax)
404697:	8b 49 1c             	mov    0x1c(%ecx),%ecx
40469a:	8b 01                	mov    (%ecx),%eax
40469c:	8d 50 02             	lea    0x2(%eax),%edx
40469f:	89 11                	mov    %edx,(%ecx)
4046a1:	c3                   	ret
4046a2:	8b 41 30             	mov    0x30(%ecx),%eax
4046a5:	8b 54 24 04          	mov    0x4(%esp),%edx
4046a9:	29 10                	sub    %edx,(%eax)
4046ab:	8b 41 20             	mov    0x20(%ecx),%eax
4046ae:	8d 0c 12             	lea    (%edx,%edx,1),%ecx
4046b1:	01 08                	add    %ecx,(%eax)
4046b3:	c2 04 00             	ret    $0x4
4046b6:	8b 41 30             	mov    0x30(%ecx),%eax
4046b9:	ff 08                	decl   (%eax)
4046bb:	8b 49 20             	mov    0x20(%ecx),%ecx
4046be:	8b 01                	mov    (%ecx),%eax
4046c0:	8d 50 02             	lea    0x2(%eax),%edx
4046c3:	89 11                	mov    %edx,(%ecx)
4046c5:	c3                   	ret
4046c6:	56                   	push   %esi
4046c7:	8b f1                	mov    %ecx,%esi
4046c9:	8b 46 50             	mov    0x50(%esi),%eax
4046cc:	85 c0                	test   %eax,%eax
4046ce:	74 19                	je     0x4046e9
4046d0:	50                   	push   %eax
4046d1:	e8 9f 22 00 00       	call   0x406975
4046d6:	85 c0                	test   %eax,%eax
4046d8:	59                   	pop    %ecx
4046d9:	75 0e                	jne    0x4046e9
4046db:	6a 02                	push   $0x2
4046dd:	50                   	push   %eax
4046de:	8b ce                	mov    %esi,%ecx