4036fe:	52                   	push   %edx
4036ff:	8b ce                	mov    %esi,%ecx
403701:	0f ae e8             	lfence
403704:	e8 99 04 00 00       	call   0x403ba2
403709:	8b 06                	mov    (%esi),%eax
40370b:	5e                   	pop    %esi
40370c:	5d                   	pop    %ebp
40370d:	c2 04 00             	ret    $0x4
403710:	68 57 00 07 80       	push   $0x80070057
403715:	e8 a5 d9 ff ff       	call   0x4010bf
40371a:	cc                   	int3
40371b:	55                   	push   %ebp
40371c:	8b ec                	mov    %esp,%ebp
40371e:	56                   	push   %esi
40371f:	8b 75 08             	mov    0x8(%ebp),%esi
403722:	85 f6                	test   %esi,%esi
403724:	78 15                	js     0x40373b
403726:	8b 11                	mov    (%ecx),%edx
403728:	3b 72 f4             	cmp    -0xc(%edx),%esi
40372b:	7f 0e                	jg     0x40373b
40372d:	0f ae e8             	lfence
403730:	8b 01                	mov    (%ecx),%eax
403732:	66 8b 04 70          	mov    (%eax,%esi,2),%ax
403736:	5e                   	pop    %esi
403737:	5d                   	pop    %ebp
403738:	c2 04 00             	ret    $0x4
40373b:	68 57 00 07 80       	push   $0x80070057
403740:	e8 7a d9 ff ff       	call   0x4010bf
403745:	cc                   	int3
403746:	53                   	push   %ebx
403747:	57                   	push   %edi
403748:	8b f9                	mov    %ecx,%edi
40374a:	33 c0                	xor    %eax,%eax
40374c:	8b 0f                	mov    (%edi),%ecx
40374e:	83 e9 10             	sub    $0x10,%ecx
403751:	8b 19                	mov    (%ecx),%ebx
403753:	39 41 04             	cmp    %eax,0x4(%ecx)
403756:	74 2c                	je     0x403784
403758:	39 41 0c             	cmp    %eax,0xc(%ecx)
40375b:	7d 0a                	jge    0x403767
40375d:	50                   	push   %eax
40375e:	8b cf                	mov    %edi,%ecx
403760:	e8 1a 02 00 00       	call   0x40397f
403765:	eb 1d                	jmp    0x403784
403767:	56                   	push   %esi
403768:	e8 95 db ff ff       	call   0x401302
40376d:	8b 03                	mov    (%ebx),%eax
40376f:	8b 70 0c             	mov    0xc(%eax),%esi
403772:	8b ce                	mov    %esi,%ecx
403774:	ff 15 50 c2 41 00    	call   *0x41c250
40377a:	8b cb                	mov    %ebx,%ecx
40377c:	ff d6                	call   *%esi
40377e:	83 c0 10             	add    $0x10,%eax
403781:	89 07                	mov    %eax,(%edi)
403783:	5e                   	pop    %esi
403784:	5f                   	pop    %edi
403785:	5b                   	pop    %ebx
403786:	c3                   	ret
403787:	55                   	push   %ebp
403788:	8b ec                	mov    %esp,%ebp
40378a:	8b 45 0c             	mov    0xc(%ebp),%eax
40378d:	53                   	push   %ebx
40378e:	c1 e8 04             	shr    $0x4,%eax
403791:	8b d9                	mov    %ecx,%ebx
403793:	57                   	push   %edi
403794:	40                   	inc    %eax
403795:	6a 06                	push   $0x6
403797:	0f b7 c0             	movzwl %ax,%eax
40379a:	50                   	push   %eax
40379b:	ff 75 08             	push   0x8(%ebp)
40379e:	ff 15 bc c1 41 00    	call   *0x41c1bc
4037a4:	85 c0                	test   %eax,%eax
4037a6:	74 46                	je     0x4037ee
4037a8:	ff 75 0c             	push   0xc(%ebp)
4037ab:	8b 4d 08             	mov    0x8(%ebp),%ecx
4037ae:	8b d0                	mov    %eax,%edx
4037b0:	e8 e0 d9 ff ff       	call   0x401195
4037b5:	8b f8                	mov    %eax,%edi
4037b7:	59                   	pop    %ecx
4037b8:	85 ff                	test   %edi,%edi
4037ba:	74 32                	je     0x4037ee
4037bc:	56                   	push   %esi
4037bd:	0f b7 37             	movzwl (%edi),%esi
4037c0:	8b cb                	mov    %ebx,%ecx
4037c2:	56                   	push   %esi
4037c3:	e8 18 ff ff ff       	call   0x4036e0
4037c8:	0f b7 17             	movzwl (%edi),%edx
4037cb:	8d 4f 02             	lea    0x2(%edi),%ecx
4037ce:	52                   	push   %edx
4037cf:	51                   	push   %ecx
4037d0:	56                   	push   %esi
4037d1:	50                   	push   %eax
4037d2:	e8 90 79 01 00       	call   0x41b167
4037d7:	50                   	push   %eax
4037d8:	e8 03 d9 ff ff       	call   0x4010e0
4037dd:	83 c4 14             	add    $0x14,%esp
4037e0:	8b cb                	mov    %ebx,%ecx
4037e2:	56                   	push   %esi
4037e3:	e8 97 01 00 00       	call   0x40397f
4037e8:	33 c0                	xor    %eax,%eax
4037ea:	40                   	inc    %eax
4037eb:	5e                   	pop    %esi
4037ec:	eb 02                	jmp    0x4037f0
4037ee:	33 c0                	xor    %eax,%eax
4037f0:	5f                   	pop    %edi
4037f1:	5b                   	pop    %ebx
4037f2:	5d                   	pop    %ebp
4037f3:	c2 08 00             	ret    $0x8
4037f6:	55                   	push   %ebp
4037f7:	8b ec                	mov    %esp,%ebp
4037f9:	53                   	push   %ebx
4037fa:	56                   	push   %esi
4037fb:	57                   	push   %edi
4037fc:	8b 7d 0c             	mov    0xc(%ebp),%edi
4037ff:	8b d9                	mov    %ecx,%ebx
403801:	85 ff                	test   %edi,%edi
403803:	79 02                	jns    0x403807
403805:	33 ff                	xor    %edi,%edi
403807:	8b 75 10             	mov    0x10(%ebp),%esi
40380a:	85 f6                	test   %esi,%esi
40380c:	79 02                	jns    0x403810
40380e:	33 f6                	xor    %esi,%esi
403810:	b8 ff ff ff 7f       	mov    $0x7fffffff,%eax
403815:	2b c7                	sub    %edi,%eax
403817:	3b c6                	cmp    %esi,%eax
403819:	7c 51                	jl     0x40386c
40381b:	8b 13                	mov    (%ebx),%edx
40381d:	8d 04 37             	lea    (%edi,%esi,1),%eax
403820:	8b 4a f4             	mov    -0xc(%edx),%ecx
403823:	3b c1                	cmp    %ecx,%eax
403825:	7e 04                	jle    0x40382b
403827:	8b f1                	mov    %ecx,%esi
403829:	2b f7                	sub    %edi,%esi
40382b:	3b f9                	cmp    %ecx,%edi
40382d:	7e 02                	jle    0x403831
40382f:	33 f6                	xor    %esi,%esi
403831:	85 ff                	test   %edi,%edi
403833:	75 1b                	jne    0x403850
403835:	3b f1                	cmp    %ecx,%esi
403837:	75 17                	jne    0x403850
403839:	8d 4a f0             	lea    -0x10(%edx),%ecx
40383c:	e8 f4 02 00 00       	call   0x403b35
403841:	8d 48 10             	lea    0x10(%eax),%ecx
403844:	8b 45 08             	mov    0x8(%ebp),%eax
403847:	89 08                	mov    %ecx,(%eax)
403849:	5f                   	pop    %edi
40384a:	5e                   	pop    %esi
40384b:	5b                   	pop    %ebx
40384c:	5d                   	pop    %ebp
40384d:	c2 0c 00             	ret    $0xc
403850:	8b cb                	mov    %ebx,%ecx
403852:	e8 23 00 00 00       	call   0x40387a
403857:	8b 4d 08             	mov    0x8(%ebp),%ecx
40385a:	50                   	push   %eax
40385b:	8b 03                	mov    (%ebx),%eax
40385d:	56                   	push   %esi
40385e:	8d 04 78             	lea    (%eax,%edi,2),%eax
403861:	50                   	push   %eax
403862:	e8 a8 00 00 00       	call   0x40390f
403867:	8b 45 08             	mov    0x8(%ebp),%eax
40386a:	eb dd                	jmp    0x403849
40386c:	68 16 02 07 80       	push   $0x80070216
403871:	0f ae e8             	lfence
403874:	e8 46 d8 ff ff       	call   0x4010bf
403879:	cc                   	int3
40387a:	8b 01                	mov    (%ecx),%eax
40387c:	56                   	push   %esi
40387d:	57                   	push   %edi
40387e:	8b 78 f0             	mov    -0x10(%eax),%edi
403881:	85 ff                	test   %edi,%edi
403883:	74 15                	je     0x40389a
403885:	8b 07                	mov    (%edi),%eax
403887:	8b 70 10             	mov    0x10(%eax),%esi
40388a:	8b ce                	mov    %esi,%ecx
40388c:	ff 15 50 c2 41 00    	call   *0x41c250
403892:	8b cf                	mov    %edi,%ecx
403894:	ff d6                	call   *%esi
403896:	85 c0                	test   %eax,%eax
403898:	75 18                	jne    0x4038b2
40389a:	e8 8c da ff ff       	call   0x40132b
40389f:	8b f8                	mov    %eax,%edi
4038a1:	8b 0f                	mov    (%edi),%ecx
4038a3:	8b 71 10             	mov    0x10(%ecx),%esi
4038a6:	8b ce                	mov    %esi,%ecx
4038a8:	ff 15 50 c2 41 00    	call   *0x41c250
4038ae:	8b cf                	mov    %edi,%ecx
4038b0:	ff d6                	call   *%esi
4038b2:	5f                   	pop    %edi
4038b3:	5e                   	pop    %esi
4038b4:	c3                   	ret
4038b5:	55                   	push   %ebp
4038b6:	8b ec                	mov    %esp,%ebp
4038b8:	53                   	push   %ebx
4038b9:	8b 5d 08             	mov    0x8(%ebp),%ebx
4038bc:	56                   	push   %esi
4038bd:	8b f1                	mov    %ecx,%esi
4038bf:	57                   	push   %edi
4038c0:	85 db                	test   %ebx,%ebx
4038c2:	74 3b                	je     0x4038ff
4038c4:	33 c0                	xor    %eax,%eax
4038c6:	50                   	push   %eax
4038c7:	50                   	push   %eax
4038c8:	6a ff                	push   $0xffffffff
4038ca:	53                   	push   %ebx
4038cb:	50                   	push   %eax
4038cc:	6a 03                	push   $0x3
4038ce:	ff 15 c0 c0 41 00    	call   *0x41c0c0
4038d4:	8d 78 ff             	lea    -0x1(%eax),%edi
4038d7:	85 ff                	test   %edi,%edi
4038d9:	7e 24                	jle    0x4038ff
4038db:	57                   	push   %edi
4038dc:	8b ce                	mov    %esi,%ecx
4038de:	0f ae e8             	lfence
4038e1:	e8 fa fd ff ff       	call   0x4036e0
4038e6:	57                   	push   %edi
4038e7:	50                   	push   %eax
4038e8:	6a ff                	push   $0xffffffff
4038ea:	53                   	push   %ebx
4038eb:	6a 00                	push   $0x0
4038ed:	6a 03                	push   $0x3
4038ef:	ff 15 c0 c0 41 00    	call   *0x41c0c0
4038f5:	57                   	push   %edi
4038f6:	8b ce                	mov    %esi,%ecx
4038f8:	e8 82 00 00 00       	call   0x40397f
4038fd:	eb 07                	jmp    0x403906
4038ff:	8b ce                	mov    %esi,%ecx
403901:	e8 40 fe ff ff       	call   0x403746
403906:	5f                   	pop    %edi
403907:	8b c6                	mov    %esi,%eax
403909:	5e                   	pop    %esi
40390a:	5b                   	pop    %ebx
40390b:	5d                   	pop    %ebp
40390c:	c2 04 00             	ret    $0x4
40390f:	55                   	push   %ebp
403910:	8b ec                	mov    %esp,%ebp
403912:	8b 45 10             	mov    0x10(%ebp),%eax
403915:	53                   	push   %ebx
403916:	8b d9                	mov    %ecx,%ebx
403918:	57                   	push   %edi
403919:	85 c0                	test   %eax,%eax
40391b:	74 52                	je     0x40396f
40391d:	83 7d 08 00          	cmpl   $0x0,0x8(%ebp)
403921:	8b 7d 0c             	mov    0xc(%ebp),%edi
403924:	75 0b                	jne    0x403931
403926:	85 ff                	test   %edi,%edi
403928:	74 07                	je     0x403931
40392a:	68 57 00 07 80       	push   $0x80070057
40392f:	eb 43                	jmp    0x403974
403931:	8b 00                	mov    (%eax),%eax
403933:	56                   	push   %esi
403934:	6a 02                	push   $0x2
403936:	57                   	push   %edi
403937:	8b 30                	mov    (%eax),%esi
403939:	8b ce                	mov    %esi,%ecx
40393b:	ff 15 50 c2 41 00    	call   *0x41c250
403941:	8b 4d 10             	mov    0x10(%ebp),%ecx
403944:	ff d6                	call   *%esi
403946:	5e                   	pop    %esi
403947:	85 c0                	test   %eax,%eax
403949:	74 2e                	je     0x403979
40394b:	83 c0 10             	add    $0x10,%eax
40394e:	8b cb                	mov    %ebx,%ecx
403950:	57                   	push   %edi
403951:	89 03                	mov    %eax,(%ebx)
403953:	e8 27 00 00 00       	call   0x40397f
403958:	8b 0b                	mov    (%ebx),%ecx
40395a:	8b d7                	mov    %edi,%edx
40395c:	57                   	push   %edi
40395d:	ff 75 08             	push   0x8(%ebp)
403960:	e8 23 03 00 00       	call   0x403c88
403965:	59                   	pop    %ecx
403966:	59                   	pop    %ecx
403967:	5f                   	pop    %edi
403968:	8b c3                	mov    %ebx,%eax
40396a:	5b                   	pop    %ebx
40396b:	5d                   	pop    %ebp
40396c:	c2 0c 00             	ret    $0xc
40396f:	68 05 40 00 80       	push   $0x80004005
403974:	e8 46 d7 ff ff       	call   0x4010bf
403979:	e8 cf 03 00 00       	call   0x403d4d
40397e:	cc                   	int3
40397f:	55                   	push   %ebp
403980:	8b ec                	mov    %esp,%ebp
403982:	8b 55 08             	mov    0x8(%ebp),%edx
403985:	85 d2                	test   %edx,%edx
403987:	78 16                	js     0x40399f
403989:	8b 01                	mov    (%ecx),%eax
40398b:	3b 50 f8             	cmp    -0x8(%eax),%edx
40398e:	7f 0f                	jg     0x40399f
403990:	89 50 f4             	mov    %edx,-0xc(%eax)
403993:	8b 01                	mov    (%ecx),%eax
403995:	33 c9                	xor    %ecx,%ecx
403997:	66 89 0c 50          	mov    %cx,(%eax,%edx,2)
40399b:	5d                   	pop    %ebp
40399c:	c2 04 00             	ret    $0x4
40399f:	68 57 00 07 80       	push   $0x80070057
4039a4:	e8 16 d7 ff ff       	call   0x4010bf
4039a9:	cc                   	int3
4039aa:	55                   	push   %ebp
4039ab:	8b ec                	mov    %esp,%ebp
4039ad:	51                   	push   %ecx
4039ae:	51                   	push   %ecx
4039af:	53                   	push   %ebx
4039b0:	8b 5d 0c             	mov    0xc(%ebp),%ebx
4039b3:	57                   	push   %edi
4039b4:	8b f9                	mov    %ecx,%edi
4039b6:	85 db                	test   %ebx,%ebx
4039b8:	75 0a                	jne    0x4039c4
4039ba:	e8 87 fd ff ff       	call   0x403746
4039bf:	e9 97 00 00 00       	jmp    0x403a5b
4039c4:	8b 4d 08             	mov    0x8(%ebp),%ecx
4039c7:	85 c9                	test   %ecx,%ecx
4039c9:	0f 84 92 00 00 00    	je     0x403a61
4039cf:	8b 07                	mov    (%edi),%eax
4039d1:	2b c8                	sub    %eax,%ecx
4039d3:	d1 f9                	sar    $1,%ecx
4039d5:	56                   	push   %esi
4039d6:	89 4d fc             	mov    %ecx,-0x4(%ebp)
4039d9:	8b cf                	mov    %edi,%ecx
4039db:	8b 70 f4             	mov    -0xc(%eax),%esi
4039de:	53                   	push   %ebx
4039df:	e8 fc fc ff ff       	call   0x4036e0
4039e4:	8b 55 fc             	mov    -0x4(%ebp),%edx
4039e7:	89 45 f8             	mov    %eax,-0x8(%ebp)
4039ea:	3b d6                	cmp    %esi,%edx
4039ec:	77 4f                	ja     0x403a3d
4039ee:	8b 0f                	mov    (%edi),%ecx
4039f0:	8d 14 50             	lea    (%eax,%edx,2),%edx
4039f3:	8b 71 f8             	mov    -0x8(%ecx),%esi
4039f6:	8d 0c 1b             	lea    (%ebx,%ebx,1),%ecx
4039f9:	85 c9                	test   %ecx,%ecx
4039fb:	74 55                	je     0x403a52
4039fd:	85 c0                	test   %eax,%eax
4039ff:	75 12                	jne    0x403a13
403a01:	e8 cd b2 00 00       	call   0x40ecd3
403a06:	c7 00 16 00 00 00    	movl   $0x16,(%eax)
403a0c:	e8 05 b2 00 00       	call   0x40ec16
403a11:	eb 3f                	jmp    0x403a52
403a13:	85 d2                	test   %edx,%edx
403a15:	74 ea                	je     0x403a01
403a17:	8d 04 36             	lea    (%esi,%esi,1),%eax
403a1a:	3b c1                	cmp    %ecx,%eax
403a1c:	73 0d                	jae    0x403a2b
403a1e:	e8 b0 b2 00 00       	call   0x40ecd3
403a23:	c7 00 22 00 00 00    	movl   $0x22,(%eax)
403a29:	eb e1                	jmp    0x403a0c
403a2b:	51                   	push   %ecx
403a2c:	52                   	push   %edx
403a2d:	ff 75 f8             	push   -0x8(%ebp)
403a30:	0f ae e8             	lfence