40537b:	89 45 fc             	mov    %eax,-0x4(%ebp)
40537e:	8b 45 fc             	mov    -0x4(%ebp),%eax
405381:	8b 00                	mov    (%eax),%eax
405383:	89 45 e8             	mov    %eax,-0x18(%ebp)
405386:	8b 45 08             	mov    0x8(%ebp),%eax
405389:	8b 18                	mov    (%eax),%ebx
40538b:	85 db                	test   %ebx,%ebx
40538d:	7f 1b                	jg     0x4053aa
40538f:	85 db                	test   %ebx,%ebx
405391:	7d 07                	jge    0x40539a
405393:	b0 04                	mov    $0x4,%al
405395:	e8 1e d8 ff ff       	call   0x402bb8
40539a:	8b 45 fc             	mov    -0x4(%ebp),%eax
40539d:	8b 55 f8             	mov    -0x8(%ebp),%edx
4053a0:	e8 bf ff ff ff       	call   0x405364
4053a5:	e9 63 01 00 00       	jmp    0x40550d
4053aa:	33 ff                	xor    %edi,%edi
4053ac:	83 7d e8 00          	cmpl   $0x0,-0x18(%ebp)
4053b0:	74 0d                	je     0x4053bf
4053b2:	83 6d e8 04          	subl   $0x4,-0x18(%ebp)
4053b6:	8b 45 e8             	mov    -0x18(%ebp),%eax
4053b9:	8b 38                	mov    (%eax),%edi
4053bb:	83 6d e8 04          	subl   $0x4,-0x18(%ebp)
4053bf:	8b 45 f8             	mov    -0x8(%ebp),%eax
4053c2:	0f b6 40 01          	movzbl 0x1(%eax),%eax
4053c6:	01 45 f8             	add    %eax,-0x8(%ebp)
4053c9:	8b 45 f8             	mov    -0x8(%ebp),%eax
4053cc:	8b 70 02             	mov    0x2(%eax),%esi
4053cf:	8b 50 06             	mov    0x6(%eax),%edx
4053d2:	85 d2                	test   %edx,%edx
4053d4:	74 07                	je     0x4053dd
4053d6:	8b 02                	mov    (%edx),%eax
4053d8:	89 45 f8             	mov    %eax,-0x8(%ebp)
4053db:	eb 05                	jmp    0x4053e2
4053dd:	33 c0                	xor    %eax,%eax
4053df:	89 45 f8             	mov    %eax,-0x8(%ebp)
4053e2:	8b c3                	mov    %ebx,%eax
4053e4:	f7 ee                	imul   %esi
4053e6:	89 45 ec             	mov    %eax,-0x14(%ebp)
4053e9:	8b 45 ec             	mov    -0x14(%ebp),%eax
4053ec:	99                   	cltd
4053ed:	f7 fb                	idiv   %ebx
4053ef:	3b f0                	cmp    %eax,%esi
4053f1:	74 07                	je     0x4053fa
4053f3:	b0 04                	mov    $0x4,%al
4053f5:	e8 be d7 ff ff       	call   0x402bb8
4053fa:	83 45 ec 08          	addl   $0x8,-0x14(%ebp)
4053fe:	83 7d e8 00          	cmpl   $0x0,-0x18(%ebp)
405402:	74 08                	je     0x40540c
405404:	8b 45 e8             	mov    -0x18(%ebp),%eax
405407:	83 38 01             	cmpl   $0x1,(%eax)
40540a:	75 3c                	jne    0x405448
40540c:	8b 45 e8             	mov    -0x18(%ebp),%eax
40540f:	89 45 e4             	mov    %eax,-0x1c(%ebp)
405412:	3b fb                	cmp    %ebx,%edi
405414:	7e 1f                	jle    0x405435
405416:	83 7d f8 00          	cmpl   $0x0,-0x8(%ebp)
40541a:	74 19                	je     0x405435
40541c:	8b 45 e8             	mov    -0x18(%ebp),%eax
40541f:	83 c0 08             	add    $0x8,%eax
405422:	8b d3                	mov    %ebx,%edx
405424:	0f af d6             	imul   %esi,%edx
405427:	03 c2                	add    %edx,%eax
405429:	8b cf                	mov    %edi,%ecx
40542b:	2b cb                	sub    %ebx,%ecx
40542d:	8b 55 f8             	mov    -0x8(%ebp),%edx
405430:	e8 27 ff ff ff       	call   0x40535c
405435:	8d 45 e4             	lea    -0x1c(%ebp),%eax
405438:	8b 55 ec             	mov    -0x14(%ebp),%edx
40543b:	e8 48 d6 ff ff       	call   0x402a88
405440:	8b 45 e4             	mov    -0x1c(%ebp),%eax
405443:	89 45 e8             	mov    %eax,-0x18(%ebp)
405446:	eb 63                	jmp    0x4054ab
405448:	8b 45 e8             	mov    -0x18(%ebp),%eax
40544b:	ff 08                	decl   (%eax)
40544d:	8b 45 ec             	mov    -0x14(%ebp),%eax
405450:	e8 e3 d5 ff ff       	call   0x402a38
405455:	89 45 e8             	mov    %eax,-0x18(%ebp)
405458:	89 7d f0             	mov    %edi,-0x10(%ebp)
40545b:	3b 5d f0             	cmp    -0x10(%ebp),%ebx
40545e:	7d 03                	jge    0x405463
405460:	89 5d f0             	mov    %ebx,-0x10(%ebp)
405463:	83 7d f8 00          	cmpl   $0x0,-0x8(%ebp)
405467:	74 2c                	je     0x405495
405469:	8b 55 f0             	mov    -0x10(%ebp),%edx
40546c:	0f af d6             	imul   %esi,%edx
40546f:	8b 45 e8             	mov    -0x18(%ebp),%eax
405472:	83 c0 08             	add    $0x8,%eax
405475:	33 c9                	xor    %ecx,%ecx
405477:	e8 a0 da ff ff       	call   0x402f1c
40547c:	8b 45 f0             	mov    -0x10(%ebp),%eax
40547f:	50                   	push   %eax
405480:	8b 55 fc             	mov    -0x4(%ebp),%edx
405483:	8b 12                	mov    (%edx),%edx
405485:	8b 45 e8             	mov    -0x18(%ebp),%eax
405488:	83 c0 08             	add    $0x8,%eax
40548b:	8b 4d f8             	mov    -0x8(%ebp),%ecx
40548e:	e8 b9 fe ff ff       	call   0x40534c
405493:	eb 16                	jmp    0x4054ab
405495:	8b 4d f0             	mov    -0x10(%ebp),%ecx
405498:	0f af ce             	imul   %esi,%ecx
40549b:	8b 55 e8             	mov    -0x18(%ebp),%edx
40549e:	83 c2 08             	add    $0x8,%edx
4054a1:	8b 45 fc             	mov    -0x4(%ebp),%eax
4054a4:	8b 00                	mov    (%eax),%eax
4054a6:	e8 ad d7 ff ff       	call   0x402c58
4054ab:	8b 45 e8             	mov    -0x18(%ebp),%eax
4054ae:	c7 00 01 00 00 00    	movl   $0x1,(%eax)
4054b4:	83 45 e8 04          	addl   $0x4,-0x18(%ebp)
4054b8:	8b 45 e8             	mov    -0x18(%ebp),%eax
4054bb:	89 18                	mov    %ebx,(%eax)
4054bd:	83 45 e8 04          	addl   $0x4,-0x18(%ebp)
4054c1:	8b d3                	mov    %ebx,%edx
4054c3:	2b d7                	sub    %edi,%edx
4054c5:	0f af d6             	imul   %esi,%edx
4054c8:	8b c6                	mov    %esi,%eax
4054ca:	0f af c7             	imul   %edi,%eax
4054cd:	03 45 e8             	add    -0x18(%ebp),%eax
4054d0:	33 c9                	xor    %ecx,%ecx
4054d2:	e8 45 da ff ff       	call   0x402f1c
4054d7:	83 7d f4 01          	cmpl   $0x1,-0xc(%ebp)
4054db:	7e 28                	jle    0x405505
4054dd:	83 45 08 04          	addl   $0x4,0x8(%ebp)
4054e1:	ff 4d f4             	decl   -0xc(%ebp)
4054e4:	4b                   	dec    %ebx
4054e5:	85 db                	test   %ebx,%ebx
4054e7:	7c 1c                	jl     0x405505
4054e9:	43                   	inc    %ebx
4054ea:	33 f6                	xor    %esi,%esi
4054ec:	8b 45 08             	mov    0x8(%ebp),%eax
4054ef:	50                   	push   %eax
4054f0:	8b 45 e8             	mov    -0x18(%ebp),%eax
4054f3:	8d 04 b0             	lea    (%eax,%esi,4),%eax
4054f6:	8b 4d f4             	mov    -0xc(%ebp),%ecx
4054f9:	8b 55 f8             	mov    -0x8(%ebp),%edx
4054fc:	e8 6b fe ff ff       	call   0x40536c
405501:	46                   	inc    %esi
405502:	4b                   	dec    %ebx
405503:	75 e7                	jne    0x4054ec
405505:	8b 45 fc             	mov    -0x4(%ebp),%eax
405508:	8b 55 e8             	mov    -0x18(%ebp),%edx
40550b:	89 10                	mov    %edx,(%eax)
40550d:	5f                   	pop    %edi
40550e:	5e                   	pop    %esi
40550f:	5b                   	pop    %ebx
405510:	8b e5                	mov    %ebp,%esp
405512:	5d                   	pop    %ebp
405513:	c2 04 00             	ret    $0x4
405516:	8b c0                	mov    %eax,%eax
405518:	54                   	push   %esp
405519:	83 04 24 04          	addl   $0x4,(%esp)
40551d:	e8 4a fe ff ff       	call   0x40536c
405522:	c3                   	ret
405523:	90                   	nop
405524:	8b 08                	mov    (%eax),%ecx
405526:	85 c9                	test   %ecx,%ecx
405528:	74 33                	je     0x40555d
40552a:	c7 00 00 00 00 00    	movl   $0x0,(%eax)
405530:	f0 ff 49 f8          	lock decl -0x8(%ecx)
405534:	75 27                	jne    0x40555d
405536:	50                   	push   %eax
405537:	89 c8                	mov    %ecx,%eax
405539:	31 c9                	xor    %ecx,%ecx
40553b:	8a 4a 01             	mov    0x1(%edx),%cl
40553e:	8b 54 11 06          	mov    0x6(%ecx,%edx,1),%edx
405542:	85 d2                	test   %edx,%edx
405544:	74 0e                	je     0x405554
405546:	8b 48 fc             	mov    -0x4(%eax),%ecx
405549:	85 c9                	test   %ecx,%ecx
40554b:	74 07                	je     0x405554
40554d:	8b 12                	mov    (%edx),%edx
40554f:	e8 9c fa ff ff       	call   0x404ff0
405554:	83 e8 08             	sub    $0x8,%eax
405557:	e8 0c d5 ff ff       	call   0x402a68
40555c:	58                   	pop    %eax
40555d:	c3                   	ret
40555e:	8b c0                	mov    %eax,%eax
405560:	53                   	push   %ebx
405561:	8b 18                	mov    (%eax),%ebx
405563:	85 d2                	test   %edx,%edx
405565:	74 04                	je     0x40556b
405567:	f0 ff 42 f8          	lock incl -0x8(%edx)
40556b:	85 db                	test   %ebx,%ebx
40556d:	74 14                	je     0x405583
40556f:	f0 ff 4b f8          	lock decl -0x8(%ebx)
405573:	75 0e                	jne    0x405583
405575:	50                   	push   %eax
405576:	52                   	push   %edx
405577:	89 ca                	mov    %ecx,%edx
405579:	ff 43 f8             	incl   -0x8(%ebx)
40557c:	e8 a3 ff ff ff       	call   0x405524
405581:	5a                   	pop    %edx
405582:	58                   	pop    %eax
405583:	89 10                	mov    %edx,(%eax)
405585:	5b                   	pop    %ebx
405586:	c3                   	ret
405587:	90                   	nop
405588:	83 c4 e4             	add    $0xffffffe4,%esp
40558b:	6a 1c                	push   $0x1c
40558d:	8d 54 24 04          	lea    0x4(%esp),%edx
405591:	52                   	push   %edx
405592:	50                   	push   %eax
405593:	e8 34 bd ff ff       	call   0x4012cc
405598:	81 7c 24 10 00 10 00 	cmpl   $0x1000,0x10(%esp)
40559f:	00
4055a0:	75 06                	jne    0x4055a8
4055a2:	8b 44 24 04          	mov    0x4(%esp),%eax
4055a6:	eb 02                	jmp    0x4055aa
4055a8:	33 c0                	xor    %eax,%eax
4055aa:	83 c4 1c             	add    $0x1c,%esp
4055ad:	c3                   	ret
4055ae:	8b c0                	mov    %eax,%eax
4055b0:	e8 d3 ff ff ff       	call   0x405588
4055b5:	c3                   	ret
4055b6:	8b c0                	mov    %eax,%eax
4055b8:	53                   	push   %ebx
4055b9:	56                   	push   %esi
4055ba:	81 c4 f8 fe ff ff    	add    $0xfffffef8,%esp
4055c0:	8b d8                	mov    %eax,%ebx
4055c2:	83 7b 10 00          	cmpl   $0x0,0x10(%ebx)
4055c6:	75 2b                	jne    0x4055f3
4055c8:	68 05 01 00 00       	push   $0x105
4055cd:	8d 44 24 04          	lea    0x4(%esp),%eax
4055d1:	50                   	push   %eax
4055d2:	8b 43 04             	mov    0x4(%ebx),%eax
4055d5:	50                   	push   %eax
4055d6:	e8 81 bc ff ff       	call   0x40125c
4055db:	8b c4                	mov    %esp,%eax
4055dd:	b2 01                	mov    $0x1,%dl
4055df:	e8 68 02 00 00       	call   0x40584c
4055e4:	8b f0                	mov    %eax,%esi
4055e6:	89 73 10             	mov    %esi,0x10(%ebx)
4055e9:	85 f6                	test   %esi,%esi
4055eb:	75 06                	jne    0x4055f3
4055ed:	8b 43 04             	mov    0x4(%ebx),%eax
4055f0:	89 43 10             	mov    %eax,0x10(%ebx)
4055f3:	8b 43 10             	mov    0x10(%ebx),%eax
4055f6:	81 c4 08 01 00 00    	add    $0x108,%esp
4055fc:	5e                   	pop    %esi
4055fd:	5b                   	pop    %ebx
4055fe:	c3                   	ret
4055ff:	90                   	nop
405600:	53                   	push   %ebx
405601:	56                   	push   %esi
405602:	57                   	push   %edi
405603:	51                   	push   %ecx
405604:	8b d8                	mov    %eax,%ebx
405606:	8b f4                	mov    %esp,%esi
405608:	a1 38 50 45 00       	mov    0x455038,%eax
40560d:	89 06                	mov    %eax,(%esi)
40560f:	83 3e 00             	cmpl   $0x0,(%esi)
405612:	74 2b                	je     0x40563f
405614:	8b 06                	mov    (%esi),%eax
405616:	3b 58 04             	cmp    0x4(%eax),%ebx
405619:	74 0e                	je     0x405629
40561b:	8b 06                	mov    (%esi),%eax
40561d:	3b 58 08             	cmp    0x8(%eax),%ebx
405620:	74 07                	je     0x405629
405622:	8b 06                	mov    (%esi),%eax
405624:	3b 58 0c             	cmp    0xc(%eax),%ebx
405627:	75 0b                	jne    0x405634
405629:	8b 06                	mov    (%esi),%eax
40562b:	e8 88 ff ff ff       	call   0x4055b8
405630:	8b f8                	mov    %eax,%edi
405632:	eb 0d                	jmp    0x405641
405634:	8b 06                	mov    (%esi),%eax
405636:	8b 00                	mov    (%eax),%eax
405638:	89 06                	mov    %eax,(%esi)
40563a:	83 3e 00             	cmpl   $0x0,(%esi)
40563d:	75 d5                	jne    0x405614
40563f:	8b fb                	mov    %ebx,%edi
405641:	8b c7                	mov    %edi,%eax
405643:	5a                   	pop    %edx
405644:	5f                   	pop    %edi
405645:	5e                   	pop    %esi
405646:	5b                   	pop    %ebx
405647:	c3                   	ret
405648:	55                   	push   %ebp
405649:	8b ec                	mov    %esp,%ebp
40564b:	51                   	push   %ecx
40564c:	53                   	push   %ebx
40564d:	56                   	push   %esi
40564e:	8d 75 fc             	lea    -0x4(%ebp),%esi
405651:	89 06                	mov    %eax,(%esi)
405653:	eb 0a                	jmp    0x40565f
405655:	8b 06                	mov    (%esi),%eax
405657:	50                   	push   %eax
405658:	e8 bf bb ff ff       	call   0x40121c
40565d:	89 06                	mov    %eax,(%esi)
40565f:	8b 06                	mov    (%esi),%eax
405661:	8a 18                	mov    (%eax),%bl
405663:	84 db                	test   %bl,%bl
405665:	74 05                	je     0x40566c
405667:	80 fb 5c             	cmp    $0x5c,%bl
40566a:	75 e9                	jne    0x405655
40566c:	8b 06                	mov    (%esi),%eax
40566e:	5e                   	pop    %esi
40566f:	5b                   	pop    %ebx
405670:	59                   	pop    %ecx
405671:	5d                   	pop    %ebp
405672:	c3                   	ret
405673:	90                   	nop
405674:	55                   	push   %ebp
405675:	8b ec                	mov    %esp,%ebp
405677:	81 c4 a4 fd ff ff    	add    $0xfffffda4,%esp
40567d:	53                   	push   %ebx
40567e:	56                   	push   %esi
40567f:	57                   	push   %edi
405680:	89 55 f8             	mov    %edx,-0x8(%ebp)
405683:	89 45 fc             	mov    %eax,-0x4(%ebp)
405686:	8b 45 fc             	mov    -0x4(%ebp),%eax
405689:	89 45 f4             	mov    %eax,-0xc(%ebp)
40568c:	68 28 58 40 00       	push   $0x405828
405691:	e8 ce bb ff ff       	call   0x401264
405696:	8b f0                	mov    %eax,%esi
405698:	85 f6                	test   %esi,%esi
40569a:	74 44                	je     0x4056e0
40569c:	68 38 58 40 00       	push   $0x405838
4056a1:	56                   	push   %esi
4056a2:	e8 c5 bb ff ff       	call   0x40126c
4056a7:	89 45 e8             	mov    %eax,-0x18(%ebp)
4056aa:	83 7d e8 00          	cmpl   $0x0,-0x18(%ebp)
4056ae:	74 30                	je     0x4056e0
4056b0:	68 05 01 00 00       	push   $0x105
4056b5:	8d 85 a5 fd ff ff    	lea    -0x25b(%ebp),%eax
4056bb:	50                   	push   %eax
4056bc:	8b 45 fc             	mov    -0x4(%ebp),%eax
4056bf:	50                   	push   %eax
4056c0:	ff 55 e8             	call   *-0x18(%ebp)
4056c3:	85 c0                	test   %eax,%eax
4056c5:	74 19                	je     0x4056e0
4056c7:	8b 45 f8             	mov    -0x8(%ebp),%eax
4056ca:	50                   	push   %eax
4056cb:	8d 85 a5 fd ff ff    	lea    -0x25b(%ebp),%eax
4056d1:	50                   	push   %eax
4056d2:	8b 45 fc             	mov    -0x4(%ebp),%eax
4056d5:	50                   	push   %eax
4056d6:	e8 b9 bb ff ff       	call   0x401294
4056db:	e9 3c 01 00 00       	jmp    0x40581c
4056e0:	8b 45 fc             	mov    -0x4(%ebp),%eax
4056e3:	80 38 5c             	cmpb   $0x5c,(%eax)
4056e6:	75 41                	jne    0x405729
4056e8:	8b 45 fc             	mov    -0x4(%ebp),%eax
4056eb:	80 78 01 5c          	cmpb   $0x5c,0x1(%eax)
4056ef:	0f 85 27 01 00 00    	jne    0x40581c
4056f5:	8b 45 fc             	mov    -0x4(%ebp),%eax
4056f8:	83 c0 02             	add    $0x2,%eax
4056fb:	e8 48 ff ff ff       	call   0x405648
405700:	89 45 f0             	mov    %eax,-0x10(%ebp)
405703:	8b 45 f0             	mov    -0x10(%ebp),%eax