40358f:	8b c8                	mov    %eax,%ecx
403591:	85 c9                	test   %ecx,%ecx
403593:	74 1f                	je     0x4035b4
403595:	8d 41 23             	lea    0x23(%ecx),%eax
403598:	83 e0 e0             	and    $0xffffffe0,%eax
40359b:	89 48 fc             	mov    %ecx,-0x4(%eax)
40359e:	eb 0b                	jmp    0x4035ab
4035a0:	51                   	push   %ecx
4035a1:	e8 f5 32 00 00       	call   0x40689b
4035a6:	59                   	pop    %ecx
4035a7:	85 c0                	test   %eax,%eax
4035a9:	74 09                	je     0x4035b4
4035ab:	5e                   	pop    %esi
4035ac:	c2 04 00             	ret    $0x4
4035af:	e8 88 23 00 00       	call   0x40593c
4035b4:	e8 39 87 00 00       	call   0x40bcf2
4035b9:	cc                   	int3
4035ba:	53                   	push   %ebx
4035bb:	56                   	push   %esi
4035bc:	57                   	push   %edi
4035bd:	8b 7c 24 10          	mov    0x10(%esp),%edi
4035c1:	8b d9                	mov    %ecx,%ebx
4035c3:	8b cf                	mov    %edi,%ecx
4035c5:	e8 96 07 00 00       	call   0x403d60
4035ca:	8b cf                	mov    %edi,%ecx
4035cc:	83 38 10             	cmpl   $0x10,(%eax)
4035cf:	73 23                	jae    0x4035f4
4035d1:	e8 93 07 00 00       	call   0x403d69
4035d6:	8b cf                	mov    %edi,%ecx
4035d8:	8b 00                	mov    (%eax),%eax
4035da:	40                   	inc    %eax
4035db:	50                   	push   %eax
4035dc:	e8 79 00 00 00       	call   0x40365a
4035e1:	50                   	push   %eax
4035e2:	8b cb                	mov    %ebx,%ecx
4035e4:	e8 71 00 00 00       	call   0x40365a
4035e9:	50                   	push   %eax
4035ea:	e8 c7 12 00 00       	call   0x4048b6
4035ef:	83 c4 0c             	add    $0xc,%esp
4035f2:	eb 2d                	jmp    0x403621
4035f4:	e8 61 00 00 00       	call   0x40365a
4035f9:	50                   	push   %eax
4035fa:	8b cb                	mov    %ebx,%ecx
4035fc:	e8 59 00 00 00       	call   0x40365a
403601:	8b c8                	mov    %eax,%ecx
403603:	e8 40 ee ff ff       	call   0x402448
403608:	50                   	push   %eax
403609:	8b cb                	mov    %ebx,%ecx
40360b:	e8 14 03 00 00       	call   0x403924
403610:	8b c8                	mov    %eax,%ecx
403612:	e8 34 ee ff ff       	call   0x40244b
403617:	8b cf                	mov    %edi,%ecx
403619:	e8 3c 00 00 00       	call   0x40365a
40361e:	83 20 00             	andl   $0x0,(%eax)
403621:	8b cf                	mov    %edi,%ecx
403623:	e8 41 07 00 00       	call   0x403d69
403628:	8b cb                	mov    %ebx,%ecx
40362a:	8b f0                	mov    %eax,%esi
40362c:	e8 38 07 00 00       	call   0x403d69
403631:	8b 0e                	mov    (%esi),%ecx
403633:	89 08                	mov    %ecx,(%eax)
403635:	8b cf                	mov    %edi,%ecx
403637:	e8 24 07 00 00       	call   0x403d60
40363c:	8b cb                	mov    %ebx,%ecx
40363e:	8b f0                	mov    %eax,%esi
403640:	e8 1b 07 00 00       	call   0x403d60
403645:	8b 16                	mov    (%esi),%edx
403647:	8b cf                	mov    %edi,%ecx
403649:	6a 00                	push   $0x0
40364b:	6a 00                	push   $0x0
40364d:	89 10                	mov    %edx,(%eax)
40364f:	e8 e6 07 00 00       	call   0x403e3a
403654:	5f                   	pop    %edi
403655:	5e                   	pop    %esi
403656:	5b                   	pop    %ebx
403657:	c2 04 00             	ret    $0x4
40365a:	e9 a4 02 00 00       	jmp    0x403903
40365f:	56                   	push   %esi
403660:	8b f1                	mov    %ecx,%esi
403662:	e8 0b 07 00 00       	call   0x403d72
403667:	8b 00                	mov    (%eax),%eax
403669:	3b 44 24 08          	cmp    0x8(%esp),%eax
40366d:	72 04                	jb     0x403673
40366f:	5e                   	pop    %esi
403670:	c2 04 00             	ret    $0x4
403673:	8b ce                	mov    %esi,%ecx
403675:	e8 40 09 00 00       	call   0x403fba
40367a:	cc                   	int3
40367b:	e8 f2 06 00 00       	call   0x403d72
403680:	8b 00                	mov    (%eax),%eax
403682:	2b 44 24 04          	sub    0x4(%esp),%eax
403686:	39 44 24 08          	cmp    %eax,0x8(%esp)
40368a:	0f 46 44 24 08       	cmovbe 0x8(%esp),%eax
40368f:	c2 08 00             	ret    $0x8
403692:	b8 09 6b 42 00       	mov    $0x426b09,%eax
403697:	e8 24 37 00 00       	call   0x406dc0
40369c:	83 ec 0c             	sub    $0xc,%esp
40369f:	53                   	push   %ebx
4036a0:	56                   	push   %esi
4036a1:	8b 75 08             	mov    0x8(%ebp),%esi
4036a4:	8b d9                	mov    %ecx,%ebx
4036a6:	57                   	push   %edi
4036a7:	89 65 f0             	mov    %esp,-0x10(%ebp)
4036aa:	83 ce 0f             	or     $0xf,%esi
4036ad:	89 5d e8             	mov    %ebx,-0x18(%ebp)
4036b0:	e8 5c 11 00 00       	call   0x404811
4036b5:	3b c6                	cmp    %esi,%eax
4036b7:	73 05                	jae    0x4036be
4036b9:	8b 75 08             	mov    0x8(%ebp),%esi
4036bc:	eb 58                	jmp    0x403716
4036be:	8b cb                	mov    %ebx,%ecx
4036c0:	e8 9b 06 00 00       	call   0x403d60
4036c5:	6a 03                	push   $0x3
4036c7:	33 d2                	xor    %edx,%edx
4036c9:	5f                   	pop    %edi
4036ca:	8b 08                	mov    (%eax),%ecx
4036cc:	8b c6                	mov    %esi,%eax
4036ce:	f7 f7                	div    %edi
4036d0:	d1 e9                	shr    $1,%ecx
4036d2:	3b c8                	cmp    %eax,%ecx
4036d4:	76 40                	jbe    0x403716
4036d6:	8b cb                	mov    %ebx,%ecx
4036d8:	e8 83 06 00 00       	call   0x403d60
4036dd:	8b cb                	mov    %ebx,%ecx
4036df:	8b f0                	mov    %eax,%esi
4036e1:	e8 7a 06 00 00       	call   0x403d60
4036e6:	8b cb                	mov    %ebx,%ecx
4036e8:	8b f8                	mov    %eax,%edi
4036ea:	e8 22 11 00 00       	call   0x404811
4036ef:	8b 0e                	mov    (%esi),%ecx
4036f1:	d1 e9                	shr    $1,%ecx
4036f3:	2b c1                	sub    %ecx,%eax
4036f5:	8b cb                	mov    %ebx,%ecx
4036f7:	39 07                	cmp    %eax,(%edi)
4036f9:	77 14                	ja     0x40370f
4036fb:	e8 60 06 00 00       	call   0x403d60
403700:	8b cb                	mov    %ebx,%ecx
403702:	8b 30                	mov    (%eax),%esi
403704:	e8 57 06 00 00       	call   0x403d60
403709:	d1 ee                	shr    $1,%esi
40370b:	03 30                	add    (%eax),%esi
40370d:	eb 07                	jmp    0x403716
40370f:	e8 fd 10 00 00       	call   0x404811
403714:	8b f0                	mov    %eax,%esi
403716:	83 65 fc 00          	andl   $0x0,-0x4(%ebp)
40371a:	8d 4e 01             	lea    0x1(%esi),%ecx
40371d:	51                   	push   %ecx
40371e:	8b cb                	mov    %ebx,%ecx
403720:	e8 ff 01 00 00       	call   0x403924
403725:	8b c8                	mov    %eax,%ecx
403727:	e8 99 08 00 00       	call   0x403fc5
40372c:	8b f8                	mov    %eax,%edi
40372e:	89 7d ec             	mov    %edi,-0x14(%ebp)
403731:	eb 30                	jmp    0x403763
403733:	8b 45 08             	mov    0x8(%ebp),%eax
403736:	8b 4d e8             	mov    -0x18(%ebp),%ecx
403739:	89 45 08             	mov    %eax,0x8(%ebp)
40373c:	40                   	inc    %eax
40373d:	89 65 f0             	mov    %esp,-0x10(%ebp)
403740:	50                   	push   %eax
403741:	c6 45 fc 02          	movb   $0x2,-0x4(%ebp)
403745:	e8 da 01 00 00       	call   0x403924
40374a:	8b c8                	mov    %eax,%ecx
40374c:	e8 74 08 00 00       	call   0x403fc5
403751:	89 45 ec             	mov    %eax,-0x14(%ebp)
403754:	b8 5a 37 40 00       	mov    $0x40375a,%eax
403759:	c3                   	ret
40375a:	8b 5d e8             	mov    -0x18(%ebp),%ebx
40375d:	8b 75 08             	mov    0x8(%ebp),%esi
403760:	8b 7d ec             	mov    -0x14(%ebp),%edi
403763:	83 7d 0c 00          	cmpl   $0x0,0xc(%ebp)
403767:	76 1b                	jbe    0x403784
403769:	ff 75 0c             	push   0xc(%ebp)
40376c:	8b cb                	mov    %ebx,%ecx
40376e:	e8 b1 05 00 00       	call   0x403d24
403773:	50                   	push   %eax
403774:	8b cf                	mov    %edi,%ecx
403776:	e8 c7 ec ff ff       	call   0x402442
40377b:	50                   	push   %eax
40377c:	e8 89 0b 00 00       	call   0x40430a
403781:	83 c4 0c             	add    $0xc,%esp
403784:	6a 00                	push   $0x0
403786:	6a 01                	push   $0x1
403788:	8b cb                	mov    %ebx,%ecx
40378a:	e8 ab 06 00 00       	call   0x403e3a
40378f:	8d 45 ec             	lea    -0x14(%ebp),%eax
403792:	8b cb                	mov    %ebx,%ecx
403794:	50                   	push   %eax
403795:	e8 c0 fe ff ff       	call   0x40365a
40379a:	8b c8                	mov    %eax,%ecx
40379c:	e8 a7 ec ff ff       	call   0x402448
4037a1:	50                   	push   %eax
4037a2:	8b cb                	mov    %ebx,%ecx
4037a4:	e8 7b 01 00 00       	call   0x403924
4037a9:	8b c8                	mov    %eax,%ecx
4037ab:	e8 9b ec ff ff       	call   0x40244b
4037b0:	8b cb                	mov    %ebx,%ecx
4037b2:	e8 a9 05 00 00       	call   0x403d60
4037b7:	ff 75 0c             	push   0xc(%ebp)
4037ba:	8b cb                	mov    %ebx,%ecx
4037bc:	89 30                	mov    %esi,(%eax)
4037be:	e8 10 01 00 00       	call   0x4038d3
4037c3:	8b 4d f4             	mov    -0xc(%ebp),%ecx
4037c6:	5f                   	pop    %edi
4037c7:	5e                   	pop    %esi
4037c8:	64 89 0d 00 00 00 00 	mov    %ecx,%fs:0x0
4037cf:	5b                   	pop    %ebx
4037d0:	8b e5                	mov    %ebp,%esp
4037d2:	5d                   	pop    %ebp
4037d3:	c2 08 00             	ret    $0x8
4037d6:	8b 4d e8             	mov    -0x18(%ebp),%ecx
4037d9:	6a 00                	push   $0x0
4037db:	6a 01                	push   $0x1
4037dd:	e8 58 06 00 00       	call   0x403e3a
4037e2:	6a 00                	push   $0x0
4037e4:	6a 00                	push   $0x0
4037e6:	e8 2b 48 00 00       	call   0x408016
4037eb:	cc                   	int3
4037ec:	56                   	push   %esi
4037ed:	8b f2                	mov    %edx,%esi
4037ef:	83 c8 ff             	or     $0xffffffff,%eax
4037f2:	33 d2                	xor    %edx,%edx
4037f4:	f7 74 24 08          	divl   0x8(%esp)
4037f8:	3b f0                	cmp    %eax,%esi
4037fa:	77 32                	ja     0x40382e
4037fc:	0f af 74 24 08       	imul   0x8(%esp),%esi
403801:	81 fe 00 10 00 00    	cmp    $0x1000,%esi
403807:	72 1a                	jb     0x403823
403809:	f6 c1 1f             	test   $0x1f,%cl
40380c:	75 20                	jne    0x40382e
40380e:	8b 41 fc             	mov    -0x4(%ecx),%eax
403811:	3b c1                	cmp    %ecx,%eax
403813:	73 19                	jae    0x40382e
403815:	2b c8                	sub    %eax,%ecx
403817:	83 f9 04             	cmp    $0x4,%ecx
40381a:	72 12                	jb     0x40382e
40381c:	83 f9 23             	cmp    $0x23,%ecx
40381f:	77 0d                	ja     0x40382e
403821:	8b c8                	mov    %eax,%ecx
403823:	51                   	push   %ecx
403824:	e8 a5 30 00 00       	call   0x4068ce
403829:	59                   	pop    %ecx
40382a:	5e                   	pop    %esi
40382b:	c2 04 00             	ret    $0x4
40382e:	e8 bf 84 00 00       	call   0x40bcf2
403833:	cc                   	int3
403834:	83 c8 ff             	or     $0xffffffff,%eax
403837:	f0 0f c1 41 04       	lock xadd %eax,0x4(%ecx)
40383c:	6a 00                	push   $0x0
40383e:	58                   	pop    %eax
40383f:	0f 44 c1             	cmove  %ecx,%eax
403842:	c3                   	ret
403843:	e8 e6 00 00 00       	call   0x40392e
403848:	8b 54 24 08          	mov    0x8(%esp),%edx
40384c:	8b 4c 24 04          	mov    0x4(%esp),%ecx
403850:	50                   	push   %eax
403851:	e8 80 eb ff ff       	call   0x4023d6
403856:	c2 08 00             	ret    $0x8
403859:	55                   	push   %ebp
40385a:	8b ec                	mov    %esp,%ebp
40385c:	83 ec 10             	sub    $0x10,%esp
40385f:	83 65 f0 00          	andl   $0x0,-0x10(%ebp)
403863:	8d 41 18             	lea    0x18(%ecx),%eax
403866:	83 65 f4 00          	andl   $0x0,-0xc(%ebp)
40386a:	50                   	push   %eax
40386b:	8d 45 f0             	lea    -0x10(%ebp),%eax
40386e:	50                   	push   %eax
40386f:	ff 75 08             	push   0x8(%ebp)
403872:	8d 45 f8             	lea    -0x8(%ebp),%eax
403875:	50                   	push   %eax
403876:	e8 f6 21 00 00       	call   0x405a71
40387b:	0f b6 55 f8          	movzbl -0x8(%ebp),%edx
40387f:	83 c4 10             	add    $0x10,%esp
403882:	0f b6 4d 0c          	movzbl 0xc(%ebp),%ecx
403886:	83 f8 01             	cmp    $0x1,%eax
403889:	0f 45 d1             	cmovne %ecx,%edx
40388c:	8a c2                	mov    %dl,%al
40388e:	8b e5                	mov    %ebp,%esp
403890:	5d                   	pop    %ebp
403891:	c2 08 00             	ret    $0x8
403894:	55                   	push   %ebp
403895:	8b ec                	mov    %esp,%ebp
403897:	83 ec 0c             	sub    $0xc,%esp
40389a:	83 65 f4 00          	andl   $0x0,-0xc(%ebp)
40389e:	8d 41 18             	lea    0x18(%ecx),%eax
4038a1:	83 65 f8 00          	andl   $0x0,-0x8(%ebp)
4038a5:	50                   	push   %eax
4038a6:	8d 45 f4             	lea    -0xc(%ebp),%eax
4038a9:	50                   	push   %eax
4038aa:	6a 01                	push   $0x1
4038ac:	8d 45 08             	lea    0x8(%ebp),%eax
4038af:	50                   	push   %eax
4038b0:	8d 45 fc             	lea    -0x4(%ebp),%eax
4038b3:	50                   	push   %eax
4038b4:	e8 16 22 00 00       	call   0x405acf
4038b9:	0f b7 4d fc          	movzwl -0x4(%ebp),%ecx
4038bd:	83 c4 14             	add    $0x14,%esp
4038c0:	85 c0                	test   %eax,%eax
4038c2:	ba ff ff 00 00       	mov    $0xffff,%edx
4038c7:	0f 48 ca             	cmovs  %edx,%ecx
4038ca:	66 8b c1             	mov    %cx,%ax
4038cd:	8b e5                	mov    %ebp,%esp
4038cf:	5d                   	pop    %ebp
4038d0:	c2 04 00             	ret    $0x4
4038d3:	55                   	push   %ebp
4038d4:	8b ec                	mov    %esp,%ebp
4038d6:	51                   	push   %ecx
4038d7:	56                   	push   %esi
4038d8:	e8 26 00 00 00       	call   0x403903
4038dd:	8b 75 08             	mov    0x8(%ebp),%esi
4038e0:	8d 4d ff             	lea    -0x1(%ebp),%ecx
4038e3:	51                   	push   %ecx
4038e4:	8b c8                	mov    %eax,%ecx
4038e6:	c6 45 ff 00          	movb   $0x0,-0x1(%ebp)
4038ea:	89 70 10             	mov    %esi,0x10(%eax)
4038ed:	e8 4a 04 00 00       	call   0x403d3c
4038f2:	03 c6                	add    %esi,%eax
4038f4:	50                   	push   %eax
4038f5:	e8 35 09 00 00       	call   0x40422f
4038fa:	59                   	pop    %ecx
4038fb:	59                   	pop    %ecx
4038fc:	5e                   	pop    %esi
4038fd:	8b e5                	mov    %ebp,%esp
4038ff:	5d                   	pop    %ebp
403900:	c2 04 00             	ret    $0x4
403903:	e9 13 00 00 00       	jmp    0x40391b
403908:	e9 11 00 00 00       	jmp    0x40391e
40390d:	e9 0f 00 00 00       	jmp    0x403921
403912:	8b c1                	mov    %ecx,%eax
403914:	c3                   	ret
403915:	8b c1                	mov    %ecx,%eax
403917:	c3                   	ret
403918:	8b c1                	mov    %ecx,%eax
40391a:	c3                   	ret
40391b:	8b c1                	mov    %ecx,%eax
40391d:	c3                   	ret
40391e:	8b c1                	mov    %ecx,%eax
403920:	c3                   	ret
403921:	8b c1                	mov    %ecx,%eax
403923:	c3                   	ret
403924:	e9 e9 ff ff ff       	jmp    0x403912
403929:	e9 e7 ff ff ff       	jmp    0x403915
40392e:	e9 e5 ff ff ff       	jmp    0x403918
403933:	b8 20 6b 42 00       	mov    $0x426b20,%eax
403938:	e8 83 34 00 00       	call   0x406dc0
40393d:	83 ec 38             	sub    $0x38,%esp
403940:	53                   	push   %ebx
403941:	56                   	push   %esi
403942:	33 f6                	xor    %esi,%esi
403944:	57                   	push   %edi