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
403958:	81 fb 00 10 00 00    	cmp    $0x1000,%ebx
40395e:	72 27                	jb     0x403987
403960:	8d 43 23             	lea    0x23(%ebx),%eax
403963:	3b c3                	cmp    %ebx,%eax
403965:	0f 86 cc 00 00 00    	jbe    0x403a37
40396b:	50                   	push   %eax
40396c:	e8 6d 7f 01 00       	call   0x41b8de
403971:	83 c4 04             	add    $0x4,%esp
403974:	85 c0                	test   %eax,%eax
403976:	0f 84 c5 00 00 00    	je     0x403a41
40397c:	8d 70 23             	lea    0x23(%eax),%esi
40397f:	83 e6 e0             	and    $0xffffffe0,%esi
403982:	89 46 fc             	mov    %eax,-0x4(%esi)
403985:	eb 13                	jmp    0x40399a
403987:	85 db                	test   %ebx,%ebx
403989:	74 0d                	je     0x403998
40398b:	53                   	push   %ebx
40398c:	e8 4d 7f 01 00       	call   0x41b8de
403991:	83 c4 04             	add    $0x4,%esp
403994:	8b f0                	mov    %eax,%esi
403996:	eb 02                	jmp    0x40399a
403998:	33 f6                	xor    %esi,%esi
40399a:	8b 45 fc             	mov    -0x4(%ebp),%eax
40399d:	8b 55 f8             	mov    -0x8(%ebp),%edx
4039a0:	8d 0c 86             	lea    (%esi,%eax,4),%ecx
4039a3:	8b 45 0c             	mov    0xc(%ebp),%eax
4039a6:	89 4d fc             	mov    %ecx,-0x4(%ebp)
4039a9:	8b 00                	mov    (%eax),%eax
4039ab:	89 01                	mov    %eax,(%ecx)
4039ad:	8b 47 04             	mov    0x4(%edi),%eax
4039b0:	8b 0f                	mov    (%edi),%ecx
4039b2:	3b d0                	cmp    %eax,%edx
4039b4:	75 0f                	jne    0x4039c5
4039b6:	2b c1                	sub    %ecx,%eax
4039b8:	50                   	push   %eax
4039b9:	51                   	push   %ecx
4039ba:	56                   	push   %esi
4039bb:	e8 90 9a 01 00       	call   0x41d450
4039c0:	83 c4 0c             	add    $0xc,%esp
4039c3:	eb 23                	jmp    0x4039e8
4039c5:	2b d1                	sub    %ecx,%edx
4039c7:	52                   	push   %edx
4039c8:	51                   	push   %ecx
4039c9:	56                   	push   %esi
4039ca:	e8 81 9a 01 00       	call   0x41d450
4039cf:	8b 47 04             	mov    0x4(%edi),%eax
4039d2:	8b 4d f8             	mov    -0x8(%ebp),%ecx
4039d5:	2b c1                	sub    %ecx,%eax
4039d7:	50                   	push   %eax
4039d8:	8b 45 fc             	mov    -0x4(%ebp),%eax
4039db:	51                   	push   %ecx
4039dc:	83 c0 04             	add    $0x4,%eax
4039df:	50                   	push   %eax
4039e0:	e8 6b 9a 01 00       	call   0x41d450
4039e5:	83 c4 18             	add    $0x18,%esp
4039e8:	8b 07                	mov    (%edi),%eax
4039ea:	85 c0                	test   %eax,%eax
4039ec:	74 2c                	je     0x403a1a
4039ee:	8b 4f 08             	mov    0x8(%edi),%ecx
4039f1:	2b c8                	sub    %eax,%ecx
4039f3:	83 e1 fc             	and    $0xfffffffc,%ecx
4039f6:	81 f9 00 10 00 00    	cmp    $0x1000,%ecx
4039fc:	72 12                	jb     0x403a10
4039fe:	8b 50 fc             	mov    -0x4(%eax),%edx
403a01:	83 c1 23             	add    $0x23,%ecx
403a04:	2b c2                	sub    %edx,%eax
403a06:	83 c0 fc             	add    $0xfffffffc,%eax
403a09:	83 f8 1f             	cmp    $0x1f,%eax
403a0c:	77 33                	ja     0x403a41
403a0e:	8b c2                	mov    %edx,%eax
403a10:	51                   	push   %ecx
403a11:	50                   	push   %eax
403a12:	e8 f7 7e 01 00       	call   0x41b90e
403a17:	83 c4 08             	add    $0x8,%esp
403a1a:	8b 45 f4             	mov    -0xc(%ebp),%eax
403a1d:	89 37                	mov    %esi,(%edi)
403a1f:	8d 0c 86             	lea    (%esi,%eax,4),%ecx
403a22:	8b 45 fc             	mov    -0x4(%ebp),%eax
403a25:	89 4f 04             	mov    %ecx,0x4(%edi)
403a28:	8d 0c 33             	lea    (%ebx,%esi,1),%ecx
403a2b:	89 4f 08             	mov    %ecx,0x8(%edi)
403a2e:	5f                   	pop    %edi
403a2f:	5e                   	pop    %esi
403a30:	5b                   	pop    %ebx
403a31:	8b e5                	mov    %ebp,%esp
403a33:	5d                   	pop    %ebp
403a34:	c2 08 00             	ret    $0x8
403a37:	e8 c4 d7 ff ff       	call   0x401200
403a3c:	e8 8f 01 00 00       	call   0x403bd0
403a41:	e8 39 d0 01 00       	call   0x420a7f
403a46:	cc                   	int3
403a47:	cc                   	int3
403a48:	cc                   	int3
403a49:	cc                   	int3
403a4a:	cc                   	int3
403a4b:	cc                   	int3
403a4c:	cc                   	int3
403a4d:	cc                   	int3
403a4e:	cc                   	int3
403a4f:	cc                   	int3
403a50:	55                   	push   %ebp
403a51:	8b ec                	mov    %esp,%ebp
403a53:	8b 01                	mov    (%ecx),%eax
403a55:	83 ec 08             	sub    $0x8,%esp
403a58:	56                   	push   %esi
403a59:	8b 70 04             	mov    0x4(%eax),%esi
403a5c:	57                   	push   %edi
403a5d:	8b 7d 08             	mov    0x8(%ebp),%edi
403a60:	80 7e 0d 00          	cmpb   $0x0,0xd(%esi)
403a64:	89 37                	mov    %esi,(%edi)
403a66:	c7 47 04 00 00 00 00 	movl   $0x0,0x4(%edi)
403a6d:	89 47 08             	mov    %eax,0x8(%edi)
403a70:	75 58                	jne    0x403aca
403a72:	53                   	push   %ebx
403a73:	8b 5d 0c             	mov    0xc(%ebp),%ebx
403a76:	8b 4b 14             	mov    0x14(%ebx),%ecx
403a79:	8b 43 10             	mov    0x10(%ebx),%eax
403a7c:	89 4d f8             	mov    %ecx,-0x8(%ebp)
403a7f:	89 45 fc             	mov    %eax,-0x4(%ebp)
403a82:	89 37                	mov    %esi,(%edi)
403a84:	8b c3                	mov    %ebx,%eax
403a86:	83 f9 08             	cmp    $0x8,%ecx
403a89:	72 02                	jb     0x403a8d
403a8b:	8b 03                	mov    (%ebx),%eax
403a8d:	83 7e 24 08          	cmpl   $0x8,0x24(%esi)
403a91:	8d 4e 10             	lea    0x10(%esi),%ecx
403a94:	72 03                	jb     0x403a99
403a96:	8b 4e 10             	mov    0x10(%esi),%ecx
403a99:	ff 75 fc             	push   -0x4(%ebp)
403a9c:	8b 56 20             	mov    0x20(%esi),%edx
403a9f:	50                   	push   %eax
403aa0:	e8 fb e9 ff ff       	call   0x4024a0
403aa5:	83 c4 08             	add    $0x8,%esp
403aa8:	85 c0                	test   %eax,%eax
403aaa:	79 07                	jns    0x403ab3
403aac:	8b 76 08             	mov    0x8(%esi),%esi
403aaf:	33 c0                	xor    %eax,%eax
403ab1:	eb 0a                	jmp    0x403abd
403ab3:	89 77 08             	mov    %esi,0x8(%edi)
403ab6:	b8 01 00 00 00       	mov    $0x1,%eax
403abb:	8b 36                	mov    (%esi),%esi
403abd:	8b 4d f8             	mov    -0x8(%ebp),%ecx
403ac0:	89 47 04             	mov    %eax,0x4(%edi)
403ac3:	80 7e 0d 00          	cmpb   $0x0,0xd(%esi)
403ac7:	74 b9                	je     0x403a82
403ac9:	5b                   	pop    %ebx
403aca:	8b c7                	mov    %edi,%eax
403acc:	5f                   	pop    %edi
403acd:	5e                   	pop    %esi
403ace:	8b e5                	mov    %ebp,%esp
403ad0:	5d                   	pop    %ebp
403ad1:	c2 08 00             	ret    $0x8
403ad4:	cc                   	int3
403ad5:	cc                   	int3
403ad6:	cc                   	int3
403ad7:	cc                   	int3
403ad8:	cc                   	int3
403ad9:	cc                   	int3
403ada:	cc                   	int3
403adb:	cc                   	int3
403adc:	cc                   	int3
403add:	cc                   	int3
403ade:	cc                   	int3
403adf:	cc                   	int3
403ae0:	55                   	push   %ebp
403ae1:	8b ec                	mov    %esp,%ebp
403ae3:	51                   	push   %ecx
403ae4:	8b 45 08             	mov    0x8(%ebp),%eax
403ae7:	53                   	push   %ebx
403ae8:	56                   	push   %esi
403ae9:	8b 75 0c             	mov    0xc(%ebp),%esi
403aec:	8b d9                	mov    %ecx,%ebx
403aee:	89 45 fc             	mov    %eax,-0x4(%ebp)
403af1:	80 7e 0d 00          	cmpb   $0x0,0xd(%esi)
403af5:	75 2d                	jne    0x403b24