4035b1:	3b 50 08             	cmp    0x8(%eax),%edx
4035b4:	75 0c                	jne    0x4035c2
4035b6:	89 48 08             	mov    %ecx,0x8(%eax)
4035b9:	89 51 08             	mov    %edx,0x8(%ecx)
4035bc:	89 0e                	mov    %ecx,(%esi)
4035be:	8b 0a                	mov    (%edx),%ecx
4035c0:	eb 0e                	jmp    0x4035d0
4035c2:	89 08                	mov    %ecx,(%eax)
4035c4:	89 51 08             	mov    %edx,0x8(%ecx)
4035c7:	89 0e                	mov    %ecx,(%esi)
4035c9:	8b 0a                	mov    (%edx),%ecx
4035cb:	eb 03                	jmp    0x4035d0
4035cd:	8d 72 04             	lea    0x4(%edx),%esi
4035d0:	80 79 0d 00          	cmpb   $0x0,0xd(%ecx)
4035d4:	75 1d                	jne    0x4035f3
4035d6:	8b 59 08             	mov    0x8(%ecx),%ebx
4035d9:	80 7b 0c 01          	cmpb   $0x1,0xc(%ebx)
4035dd:	0f 85 b6 00 00 00    	jne    0x403699
4035e3:	8b 01                	mov    (%ecx),%eax
4035e5:	80 78 0c 01          	cmpb   $0x1,0xc(%eax)
4035e9:	0f 85 aa 00 00 00    	jne    0x403699
4035ef:	c6 41 0c 00          	movb   $0x0,0xc(%ecx)
4035f3:	8b 45 fc             	mov    -0x4(%ebp),%eax
4035f6:	8b 4d f4             	mov    -0xc(%ebp),%ecx
4035f9:	8b f9                	mov    %ecx,%edi
4035fb:	8b 16                	mov    (%esi),%edx
4035fd:	8b 00                	mov    (%eax),%eax
4035ff:	3b 48 04             	cmp    0x4(%eax),%ecx
403602:	0f 85 88 fe ff ff    	jne    0x403490
403608:	8b 5d f8             	mov    -0x8(%ebp),%ebx
40360b:	c6 47 0c 01          	movb   $0x1,0xc(%edi)
40360f:	8b 45 fc             	mov    -0x4(%ebp),%eax
403612:	8b 48 04             	mov    0x4(%eax),%ecx
403615:	85 c9                	test   %ecx,%ecx
403617:	74 04                	je     0x40361d
403619:	49                   	dec    %ecx
40361a:	89 48 04             	mov    %ecx,0x4(%eax)
40361d:	5f                   	pop    %edi
40361e:	5e                   	pop    %esi
40361f:	8b c3                	mov    %ebx,%eax
403621:	5b                   	pop    %ebx
403622:	8b e5                	mov    %ebp,%esp
403624:	5d                   	pop    %ebp
403625:	c2 04 00             	ret    $0x4
403628:	8b 41 04             	mov    0x4(%ecx),%eax
40362b:	3b 48 08             	cmp    0x8(%eax),%ecx
40362e:	75 05                	jne    0x403635
403630:	89 58 08             	mov    %ebx,0x8(%eax)
403633:	eb 02                	jmp    0x403637
403635:	89 18                	mov    %ebx,(%eax)
403637:	89 4b 08             	mov    %ecx,0x8(%ebx)
40363a:	89 59 04             	mov    %ebx,0x4(%ecx)
40363d:	8b 4a 08             	mov    0x8(%edx),%ecx
403640:	8a 42 0c             	mov    0xc(%edx),%al
403643:	88 41 0c             	mov    %al,0xc(%ecx)
403646:	c6 42 0c 01          	movb   $0x1,0xc(%edx)
40364a:	8b 41 08             	mov    0x8(%ecx),%eax
40364d:	c6 40 0c 01          	movb   $0x1,0xc(%eax)
403651:	8b 4a 08             	mov    0x8(%edx),%ecx
403654:	8b 01                	mov    (%ecx),%eax
403656:	89 42 08             	mov    %eax,0x8(%edx)
403659:	8b 01                	mov    (%ecx),%eax
40365b:	80 78 0d 00          	cmpb   $0x0,0xd(%eax)
40365f:	75 03                	jne    0x403664
403661:	89 50 04             	mov    %edx,0x4(%eax)
403664:	8b 06                	mov    (%esi),%eax
403666:	89 41 04             	mov    %eax,0x4(%ecx)
403669:	8b 45 fc             	mov    -0x4(%ebp),%eax
40366c:	8b 00                	mov    (%eax),%eax
40366e:	3b 50 04             	cmp    0x4(%eax),%edx
403671:	75 09                	jne    0x40367c
403673:	89 48 04             	mov    %ecx,0x4(%eax)
403676:	89 11                	mov    %edx,(%ecx)
403678:	89 0e                	mov    %ecx,(%esi)
40367a:	eb 8c                	jmp    0x403608
40367c:	8b 06                	mov    (%esi),%eax
40367e:	3b 10                	cmp    (%eax),%edx
403680:	75 0b                	jne    0x40368d
403682:	89 08                	mov    %ecx,(%eax)
403684:	89 11                	mov    %edx,(%ecx)
403686:	89 0e                	mov    %ecx,(%esi)
403688:	e9 7b ff ff ff       	jmp    0x403608
40368d:	89 48 08             	mov    %ecx,0x8(%eax)
403690:	89 11                	mov    %edx,(%ecx)
403692:	89 0e                	mov    %ecx,(%esi)
403694:	e9 6f ff ff ff       	jmp    0x403608
403699:	8b 01                	mov    (%ecx),%eax
40369b:	80 78 0c 01          	cmpb   $0x1,0xc(%eax)
40369f:	75 45                	jne    0x4036e6
4036a1:	c6 43 0c 01          	movb   $0x1,0xc(%ebx)
4036a5:	8b 59 08             	mov    0x8(%ecx),%ebx
4036a8:	c6 41 0c 00          	movb   $0x0,0xc(%ecx)
4036ac:	8b 03                	mov    (%ebx),%eax
4036ae:	89 41 08             	mov    %eax,0x8(%ecx)
4036b1:	8b 03                	mov    (%ebx),%eax
4036b3:	80 78 0d 00          	cmpb   $0x0,0xd(%eax)
4036b7:	75 03                	jne    0x4036bc
4036b9:	89 48 04             	mov    %ecx,0x4(%eax)
4036bc:	8b 41 04             	mov    0x4(%ecx),%eax
4036bf:	89 43 04             	mov    %eax,0x4(%ebx)
4036c2:	8b 45 fc             	mov    -0x4(%ebp),%eax
4036c5:	8b 00                	mov    (%eax),%eax
4036c7:	3b 48 04             	cmp    0x4(%eax),%ecx
4036ca:	75 05                	jne    0x4036d1
4036cc:	89 58 04             	mov    %ebx,0x4(%eax)
4036cf:	eb 0e                	jmp    0x4036df
4036d1:	8b 41 04             	mov    0x4(%ecx),%eax
4036d4:	3b 08                	cmp    (%eax),%ecx
4036d6:	75 04                	jne    0x4036dc
4036d8:	89 18                	mov    %ebx,(%eax)
4036da:	eb 03                	jmp    0x4036df
4036dc:	89 58 08             	mov    %ebx,0x8(%eax)
4036df:	89 0b                	mov    %ecx,(%ebx)
4036e1:	89 59 04             	mov    %ebx,0x4(%ecx)
4036e4:	8b 0a                	mov    (%edx),%ecx
4036e6:	8a 42 0c             	mov    0xc(%edx),%al
4036e9:	88 41 0c             	mov    %al,0xc(%ecx)
4036ec:	c6 42 0c 01          	movb   $0x1,0xc(%edx)
4036f0:	8b 01                	mov    (%ecx),%eax
4036f2:	c6 40 0c 01          	movb   $0x1,0xc(%eax)
4036f6:	8b 0a                	mov    (%edx),%ecx
4036f8:	8b 41 08             	mov    0x8(%ecx),%eax
4036fb:	89 02                	mov    %eax,(%edx)
4036fd:	8b 41 08             	mov    0x8(%ecx),%eax
403700:	80 78 0d 00          	cmpb   $0x0,0xd(%eax)
403704:	75 03                	jne    0x403709
403706:	89 50 04             	mov    %edx,0x4(%eax)
403709:	8b 06                	mov    (%esi),%eax
40370b:	89 41 04             	mov    %eax,0x4(%ecx)
40370e:	8b 45 fc             	mov    -0x4(%ebp),%eax
403711:	8b 00                	mov    (%eax),%eax
403713:	3b 50 04             	cmp    0x4(%eax),%edx
403716:	75 0d                	jne    0x403725
403718:	89 48 04             	mov    %ecx,0x4(%eax)
40371b:	89 51 08             	mov    %edx,0x8(%ecx)
40371e:	89 0e                	mov    %ecx,(%esi)
403720:	e9 e3 fe ff ff       	jmp    0x403608
403725:	8b 06                	mov    (%esi),%eax
403727:	3b 50 08             	cmp    0x8(%eax),%edx
40372a:	75 0d                	jne    0x403739
40372c:	89 48 08             	mov    %ecx,0x8(%eax)
40372f:	89 51 08             	mov    %edx,0x8(%ecx)
403732:	89 0e                	mov    %ecx,(%esi)
403734:	e9 cf fe ff ff       	jmp    0x403608
403739:	89 08                	mov    %ecx,(%eax)
40373b:	89 51 08             	mov    %edx,0x8(%ecx)
40373e:	89 0e                	mov    %ecx,(%esi)
403740:	e9 c3 fe ff ff       	jmp    0x403608
403745:	cc                   	int3
403746:	cc                   	int3
403747:	cc                   	int3
403748:	cc                   	int3
403749:	cc                   	int3
40374a:	cc                   	int3
40374b:	cc                   	int3
40374c:	cc                   	int3
40374d:	cc                   	int3
40374e:	cc                   	int3
40374f:	cc                   	int3
403750:	55                   	push   %ebp
403751:	8b ec                	mov    %esp,%ebp
403753:	83 ec 10             	sub    $0x10,%esp
403756:	8b 45 08             	mov    0x8(%ebp),%eax
403759:	53                   	push   %ebx
40375a:	8b d9                	mov    %ecx,%ebx
40375c:	89 45 fc             	mov    %eax,-0x4(%ebp)
40375f:	8b 45 0c             	mov    0xc(%ebp),%eax
403762:	8b c8                	mov    %eax,%ecx
403764:	56                   	push   %esi
403765:	89 45 f0             	mov    %eax,-0x10(%ebp)
403768:	8b 45 fc             	mov    -0x4(%ebp),%eax
40376b:	2b c8                	sub    %eax,%ecx
40376d:	8b 53 08             	mov    0x8(%ebx),%edx
403770:	57                   	push   %edi
403771:	8b 3b                	mov    (%ebx),%edi
403773:	2b d7                	sub    %edi,%edx
403775:	89 4d f8             	mov    %ecx,-0x8(%ebp)
403778:	c1 f9 02             	sar    $0x2,%ecx
40377b:	c1 fa 02             	sar    $0x2,%edx
40377e:	89 4d f4             	mov    %ecx,-0xc(%ebp)
403781:	3b ca                	cmp    %edx,%ecx
403783:	0f 86 ee 00 00 00    	jbe    0x403877
403789:	81 f9 ff ff ff 3f    	cmp    $0x3fffffff,%ecx
40378f:	0f 87 42 01 00 00    	ja     0x4038d7
403795:	8b f2                	mov    %edx,%esi
403797:	b8 ff ff ff 3f       	mov    $0x3fffffff,%eax
40379c:	d1 ee                	shr    $1,%esi
40379e:	2b c6                	sub    %esi,%eax
4037a0:	3b d0                	cmp    %eax,%edx
4037a2:	76 07                	jbe    0x4037ab
4037a4:	be ff ff ff 3f       	mov    $0x3fffffff,%esi
4037a9:	eb 07                	jmp    0x4037b2
4037ab:	03 f2                	add    %edx,%esi
4037ad:	3b f1                	cmp    %ecx,%esi
4037af:	0f 42 f1             	cmovb  %ecx,%esi
4037b2:	85 ff                	test   %edi,%edi
4037b4:	74 3f                	je     0x4037f5
4037b6:	c1 e2 02             	shl    $0x2,%edx
4037b9:	81 fa 00 10 00 00    	cmp    $0x1000,%edx
4037bf:	72 16                	jb     0x4037d7
4037c1:	8b 4f fc             	mov    -0x4(%edi),%ecx
4037c4:	83 c2 23             	add    $0x23,%edx
4037c7:	2b f9                	sub    %ecx,%edi
4037c9:	8d 47 fc             	lea    -0x4(%edi),%eax
4037cc:	83 f8 1f             	cmp    $0x1f,%eax
4037cf:	0f 87 07 01 00 00    	ja     0x4038dc
4037d5:	8b f9                	mov    %ecx,%edi
4037d7:	52                   	push   %edx
4037d8:	57                   	push   %edi
4037d9:	e8 30 81 01 00       	call   0x41b90e
4037de:	c7 03 00 00 00 00    	movl   $0x0,(%ebx)
4037e4:	83 c4 08             	add    $0x8,%esp
4037e7:	c7 43 04 00 00 00 00 	movl   $0x0,0x4(%ebx)
4037ee:	c7 43 08 00 00 00 00 	movl   $0x0,0x8(%ebx)
4037f5:	81 fe ff ff ff 3f    	cmp    $0x3fffffff,%esi
4037fb:	0f 87 e0 00 00 00    	ja     0x4038e1
403801:	8d 3c b5 00 00 00 00 	lea    0x0(,%esi,4),%edi
403808:	81 ff 00 10 00 00    	cmp    $0x1000,%edi
40380e:	72 27                	jb     0x403837
403810:	8d 47 23             	lea    0x23(%edi),%eax
403813:	3b c7                	cmp    %edi,%eax
403815:	0f 86 c6 00 00 00    	jbe    0x4038e1
40381b:	50                   	push   %eax
40381c:	e8 bd 80 01 00       	call   0x41b8de
403821:	83 c4 04             	add    $0x4,%esp
403824:	85 c0                	test   %eax,%eax
403826:	0f 84 b0 00 00 00    	je     0x4038dc
40382c:	8d 70 23             	lea    0x23(%eax),%esi
40382f:	83 e6 e0             	and    $0xffffffe0,%esi
403832:	89 46 fc             	mov    %eax,-0x4(%esi)
403835:	eb 13                	jmp    0x40384a
403837:	85 ff                	test   %edi,%edi
403839:	74 0d                	je     0x403848
40383b:	57                   	push   %edi
40383c:	e8 9d 80 01 00       	call   0x41b8de
403841:	83 c4 04             	add    $0x4,%esp
403844:	8b f0                	mov    %eax,%esi
403846:	eb 02                	jmp    0x40384a
403848:	33 f6                	xor    %esi,%esi
40384a:	ff 75 f8             	push   -0x8(%ebp)
40384d:	89 33                	mov    %esi,(%ebx)
40384f:	8d 04 37             	lea    (%edi,%esi,1),%eax
403852:	89 73 04             	mov    %esi,0x4(%ebx)
403855:	89 43 08             	mov    %eax,0x8(%ebx)
403858:	8b 45 fc             	mov    -0x4(%ebp),%eax
40385b:	50                   	push   %eax
40385c:	56                   	push   %esi
40385d:	e8 ee 9b 01 00       	call   0x41d450
403862:	8b 45 f4             	mov    -0xc(%ebp),%eax
403865:	83 c4 0c             	add    $0xc,%esp
403868:	5f                   	pop    %edi
403869:	8d 04 86             	lea    (%esi,%eax,4),%eax
40386c:	5e                   	pop    %esi
40386d:	89 43 04             	mov    %eax,0x4(%ebx)
403870:	5b                   	pop    %ebx
403871:	8b e5                	mov    %ebp,%esp
403873:	5d                   	pop    %ebp
403874:	c2 0c 00             	ret    $0xc
403877:	8b 73 04             	mov    0x4(%ebx),%esi
40387a:	2b f7                	sub    %edi,%esi
40387c:	c1 fe 02             	sar    $0x2,%esi
40387f:	3b ce                	cmp    %esi,%ecx
403881:	76 35                	jbe    0x4038b8
403883:	c1 e6 02             	shl    $0x2,%esi
403886:	56                   	push   %esi
403887:	50                   	push   %eax
403888:	57                   	push   %edi
403889:	e8 c2 9b 01 00       	call   0x41d450
40388e:	8b 45 fc             	mov    -0x4(%ebp),%eax
403891:	8b 7b 04             	mov    0x4(%ebx),%edi
403894:	03 c6                	add    %esi,%eax
403896:	8b 75 f0             	mov    -0x10(%ebp),%esi
403899:	2b f0                	sub    %eax,%esi
40389b:	56                   	push   %esi
40389c:	50                   	push   %eax
40389d:	57                   	push   %edi
40389e:	e8 ad 9b 01 00       	call   0x41d450
4038a3:	83 c4 18             	add    $0x18,%esp
4038a6:	c1 fe 02             	sar    $0x2,%esi
4038a9:	8d 04 b7             	lea    (%edi,%esi,4),%eax
4038ac:	5f                   	pop    %edi
4038ad:	5e                   	pop    %esi
4038ae:	89 43 04             	mov    %eax,0x4(%ebx)
4038b1:	5b                   	pop    %ebx
4038b2:	8b e5                	mov    %ebp,%esp
4038b4:	5d                   	pop    %ebp
4038b5:	c2 0c 00             	ret    $0xc
4038b8:	ff 75 f8             	push   -0x8(%ebp)
4038bb:	50                   	push   %eax
4038bc:	57                   	push   %edi
4038bd:	e8 8e 9b 01 00       	call   0x41d450
4038c2:	8b 45 f4             	mov    -0xc(%ebp),%eax
4038c5:	83 c4 0c             	add    $0xc,%esp
4038c8:	8d 04 87             	lea    (%edi,%eax,4),%eax
4038cb:	5f                   	pop    %edi
4038cc:	5e                   	pop    %esi
4038cd:	89 43 04             	mov    %eax,0x4(%ebx)
4038d0:	5b                   	pop    %ebx
4038d1:	8b e5                	mov    %ebp,%esp
4038d3:	5d                   	pop    %ebp
4038d4:	c2 0c 00             	ret    $0xc
4038d7:	e8 f4 02 00 00       	call   0x403bd0
4038dc:	e8 9e d1 01 00       	call   0x420a7f
4038e1:	e8 1a d9 ff ff       	call   0x401200
4038e6:	cc                   	int3
4038e7:	cc                   	int3
4038e8:	cc                   	int3
4038e9:	cc                   	int3
4038ea:	cc                   	int3
4038eb:	cc                   	int3
4038ec:	cc                   	int3
4038ed:	cc                   	int3
4038ee:	cc                   	int3
4038ef:	cc                   	int3
4038f0:	55                   	push   %ebp
4038f1:	8b ec                	mov    %esp,%ebp
4038f3:	83 ec 0c             	sub    $0xc,%esp
4038f6:	8b 45 08             	mov    0x8(%ebp),%eax
4038f9:	53                   	push   %ebx
4038fa:	56                   	push   %esi
4038fb:	57                   	push   %edi
4038fc:	8b f9                	mov    %ecx,%edi
4038fe:	89 45 f8             	mov    %eax,-0x8(%ebp)
403901:	8b 17                	mov    (%edi),%edx
403903:	2b c2                	sub    %edx,%eax
403905:	c1 f8 02             	sar    $0x2,%eax
403908:	89 45 fc             	mov    %eax,-0x4(%ebp)
40390b:	8b 47 04             	mov    0x4(%edi),%eax
40390e:	2b c2                	sub    %edx,%eax
403910:	c1 f8 02             	sar    $0x2,%eax
403913:	3d ff ff ff 3f       	cmp    $0x3fffffff,%eax
403918:	0f 84 1e 01 00 00    	je     0x403a3c
40391e:	8b 4f 08             	mov    0x8(%edi),%ecx
403921:	8d 70 01             	lea    0x1(%eax),%esi
403924:	2b ca                	sub    %edx,%ecx
403926:	89 75 f4             	mov    %esi,-0xc(%ebp)
403929:	c1 f9 02             	sar    $0x2,%ecx
40392c:	b8 ff ff ff 3f       	mov    $0x3fffffff,%eax
403931:	8b d1                	mov    %ecx,%edx
403933:	d1 ea                	shr    $1,%edx
403935:	2b c2                	sub    %edx,%eax
403937:	3b c8                	cmp    %eax,%ecx
403939:	0f 87 f8 00 00 00    	ja     0x403a37
40393f:	8d 04 0a             	lea    (%edx,%ecx,1),%eax
403942:	8b de                	mov    %esi,%ebx
403944:	3b c6                	cmp    %esi,%eax
403946:	0f 43 d8             	cmovae %eax,%ebx
403949:	81 fb ff ff ff 3f    	cmp    $0x3fffffff,%ebx
40394f:	0f 87 e2 00 00 00    	ja     0x403a37
403955:	c1 e3 02             	shl    $0x2,%ebx