407764:	dd 1e                	fstpl  (%esi)
407766:	e9 5f ff ff ff       	jmp    0x4076ca
40776b:	33 d2                	xor    %edx,%edx
40776d:	eb 9c                	jmp    0x40770b
40776f:	33 f6                	xor    %esi,%esi
407771:	e9 55 ff ff ff       	jmp    0x4076cb
407776:	56                   	push   %esi
407777:	8b f1                	mov    %ecx,%esi
407779:	c7 06 78 fb 48 00    	movl   $0x48fb78,(%esi)
40777f:	e8 5c fe ff ff       	call   0x4075e0
407784:	ff 76 04             	push   0x4(%esi)
407787:	e8 e0 98 01 00       	call   0x42106c
40778c:	59                   	pop    %ecx
40778d:	5e                   	pop    %esi
40778e:	c3                   	ret
40778f:	55                   	push   %ebp
407790:	8b ec                	mov    %esp,%ebp
407792:	f6 45 08 02          	testb  $0x2,0x8(%ebp)
407796:	56                   	push   %esi
407797:	8b f1                	mov    %ecx,%esi
407799:	0f 84 7a 77 03 00    	je     0x43ef19
40779f:	57                   	push   %edi
4077a0:	68 76 77 40 00       	push   $0x407776
4077a5:	8d 7e fc             	lea    -0x4(%esi),%edi
4077a8:	ff 37                	push   (%edi)
4077aa:	6a 10                	push   $0x10
4077ac:	56                   	push   %esi
4077ad:	e8 21 cf ff ff       	call   0x4046d3
4077b2:	f6 45 08 01          	testb  $0x1,0x8(%ebp)
4077b6:	74 07                	je     0x4077bf
4077b8:	57                   	push   %edi
4077b9:	e8 ae 98 01 00       	call   0x42106c
4077be:	59                   	pop    %ecx
4077bf:	8b c7                	mov    %edi,%eax
4077c1:	5f                   	pop    %edi
4077c2:	5e                   	pop    %esi
4077c3:	5d                   	pop    %ebp
4077c4:	c2 04 00             	ret    $0x4
4077c7:	56                   	push   %esi
4077c8:	8b f1                	mov    %ecx,%esi
4077ca:	33 c9                	xor    %ecx,%ecx
4077cc:	6a 08                	push   $0x8
4077ce:	58                   	pop    %eax
4077cf:	6a 02                	push   $0x2
4077d1:	83 66 04 00          	andl   $0x0,0x4(%esi)
4077d5:	5a                   	pop    %edx
4077d6:	89 46 08             	mov    %eax,0x8(%esi)
4077d9:	f7 e2                	mul    %edx
4077db:	0f 90 c1             	seto   %cl
4077de:	f7 d9                	neg    %ecx
4077e0:	0b c8                	or     %eax,%ecx
4077e2:	51                   	push   %ecx
4077e3:	e8 0e 98 01 00       	call   0x420ff6
4077e8:	33 c9                	xor    %ecx,%ecx
4077ea:	89 06                	mov    %eax,(%esi)
4077ec:	6a 04                	push   $0x4
4077ee:	66 89 08             	mov    %cx,(%eax)
4077f1:	e8 00 98 01 00       	call   0x420ff6
4077f6:	59                   	pop    %ecx
4077f7:	59                   	pop    %ecx
4077f8:	85 c0                	test   %eax,%eax
4077fa:	74 0d                	je     0x407809
4077fc:	c7 00 01 00 00 00    	movl   $0x1,(%eax)
407802:	89 46 0c             	mov    %eax,0xc(%esi)
407805:	8b c6                	mov    %esi,%eax
407807:	5e                   	pop    %esi
407808:	c3                   	ret
407809:	33 c0                	xor    %eax,%eax
40780b:	eb f5                	jmp    0x407802
40780d:	55                   	push   %ebp
40780e:	8b ec                	mov    %esp,%ebp
407810:	83 ec 10             	sub    $0x10,%esp
407813:	53                   	push   %ebx
407814:	8b c1                	mov    %ecx,%eax
407816:	56                   	push   %esi
407817:	57                   	push   %edi
407818:	33 f6                	xor    %esi,%esi
40781a:	89 45 f8             	mov    %eax,-0x8(%ebp)
40781d:	8b 78 04             	mov    0x4(%eax),%edi
407820:	89 7d f0             	mov    %edi,-0x10(%ebp)
407823:	8d 57 ff             	lea    -0x1(%edi),%edx
407826:	85 ff                	test   %edi,%edi
407828:	74 49                	je     0x407873
40782a:	8b 45 08             	mov    0x8(%ebp),%eax
40782d:	0f b7 00             	movzwl (%eax),%eax
407830:	89 45 fc             	mov    %eax,-0x4(%ebp)
407833:	33 db                	xor    %ebx,%ebx
407835:	33 c9                	xor    %ecx,%ecx
407837:	66 85 c0             	test   %ax,%ax
40783a:	74 2c                	je     0x407868
40783c:	8b 45 f8             	mov    -0x8(%ebp),%eax
40783f:	8b 7d 08             	mov    0x8(%ebp),%edi
407842:	8b 00                	mov    (%eax),%eax
407844:	0f b7 04 50          	movzwl (%eax,%edx,2),%eax
407848:	89 45 f4             	mov    %eax,-0xc(%ebp)
40784b:	8b 45 fc             	mov    -0x4(%ebp),%eax
40784e:	0f b7 c0             	movzwl %ax,%eax
407851:	66 39 45 f4          	cmp    %ax,-0xc(%ebp)
407855:	74 21                	je     0x407878
407857:	43                   	inc    %ebx
407858:	0f b7 04 5f          	movzwl (%edi,%ebx,2),%eax
40785c:	66 85 c0             	test   %ax,%ax
40785f:	75 f0                	jne    0x407851
407861:	8b 7d f0             	mov    -0x10(%ebp),%edi
407864:	85 c9                	test   %ecx,%ecx
407866:	75 13                	jne    0x40787b
407868:	8b c2                	mov    %edx,%eax
40786a:	5f                   	pop    %edi
40786b:	5e                   	pop    %esi
40786c:	5b                   	pop    %ebx
40786d:	8b e5                	mov    %ebp,%esp
40786f:	5d                   	pop    %ebp
407870:	c2 04 00             	ret    $0x4
407873:	83 c8 ff             	or     $0xffffffff,%eax
407876:	eb f2                	jmp    0x40786a
407878:	41                   	inc    %ecx
407879:	eb dc                	jmp    0x407857
40787b:	8b 45 fc             	mov    -0x4(%ebp),%eax
40787e:	4a                   	dec    %edx
40787f:	46                   	inc    %esi
407880:	3b f7                	cmp    %edi,%esi
407882:	72 af                	jb     0x407833
407884:	eb ed                	jmp    0x407873
407886:	55                   	push   %ebp
407887:	8b ec                	mov    %esp,%ebp
407889:	56                   	push   %esi
40788a:	ff 75 08             	push   0x8(%ebp)
40788d:	8b f1                	mov    %ecx,%esi
40788f:	e8 79 ff ff ff       	call   0x40780d
407894:	8b ce                	mov    %esi,%ecx
407896:	6a ff                	push   $0xffffffff
407898:	83 f8 ff             	cmp    $0xffffffff,%eax
40789b:	74 0c                	je     0x4078a9
40789d:	40                   	inc    %eax
40789e:	50                   	push   %eax
40789f:	e8 e8 05 00 00       	call   0x407e8c
4078a4:	5e                   	pop    %esi
4078a5:	5d                   	pop    %ebp
4078a6:	c2 04 00             	ret    $0x4
4078a9:	6a 00                	push   $0x0
4078ab:	eb f2                	jmp    0x40789f
4078ad:	55                   	push   %ebp
4078ae:	8b ec                	mov    %esp,%ebp
4078b0:	53                   	push   %ebx
4078b1:	56                   	push   %esi
4078b2:	8b 75 10             	mov    0x10(%ebp),%esi
4078b5:	57                   	push   %edi
4078b6:	8b f9                	mov    %ecx,%edi
4078b8:	85 f6                	test   %esi,%esi
4078ba:	74 73                	je     0x40792f
4078bc:	83 fe ff             	cmp    $0xffffffff,%esi
4078bf:	74 6e                	je     0x40792f
4078c1:	8b 5d 08             	mov    0x8(%ebp),%ebx
4078c4:	85 db                	test   %ebx,%ebx
4078c6:	74 67                	je     0x40792f
4078c8:	8b 4f 0c             	mov    0xc(%edi),%ecx
4078cb:	8b 01                	mov    (%ecx),%eax
4078cd:	83 f8 01             	cmp    $0x1,%eax
4078d0:	7f 2e                	jg     0x407900
4078d2:	56                   	push   %esi
4078d3:	8b cf                	mov    %edi,%ecx
4078d5:	e8 ad 07 00 00       	call   0x408087
4078da:	8b 45 0c             	mov    0xc(%ebp),%eax
4078dd:	89 77 04             	mov    %esi,0x4(%edi)
4078e0:	03 f6                	add    %esi,%esi
4078e2:	56                   	push   %esi
4078e3:	8d 04 43             	lea    (%ebx,%eax,2),%eax
4078e6:	50                   	push   %eax
4078e7:	ff 37                	push   (%edi)
4078e9:	e8 92 97 01 00       	call   0x421080
4078ee:	8b 07                	mov    (%edi),%eax
4078f0:	83 c4 0c             	add    $0xc,%esp
4078f3:	33 c9                	xor    %ecx,%ecx
4078f5:	66 89 0c 06          	mov    %cx,(%esi,%eax,1)
4078f9:	5f                   	pop    %edi
4078fa:	5e                   	pop    %esi
4078fb:	5b                   	pop    %ebx
4078fc:	5d                   	pop    %ebp
4078fd:	c2 0c 00             	ret    $0xc
407900:	48                   	dec    %eax
407901:	89 01                	mov    %eax,(%ecx)
407903:	8b cf                	mov    %edi,%ecx
407905:	e8 7f 08 00 00       	call   0x408189
40790a:	8d 46 01             	lea    0x1(%esi),%eax
40790d:	50                   	push   %eax
40790e:	e8 5d 08 00 00       	call   0x408170
407913:	33 c9                	xor    %ecx,%ecx
407915:	89 47 08             	mov    %eax,0x8(%edi)
407918:	6a 02                	push   $0x2
40791a:	5a                   	pop    %edx
40791b:	f7 e2                	mul    %edx
40791d:	0f 90 c1             	seto   %cl
407920:	f7 d9                	neg    %ecx
407922:	0b c8                	or     %eax,%ecx
407924:	51                   	push   %ecx
407925:	e8 cc 96 01 00       	call   0x420ff6
40792a:	59                   	pop    %ecx
40792b:	89 07                	mov    %eax,(%edi)
40792d:	eb ab                	jmp    0x4078da
40792f:	6a ff                	push   $0xffffffff
407931:	6a 00                	push   $0x0
407933:	e8 54 05 00 00       	call   0x407e8c
407938:	eb bf                	jmp    0x4078f9
40793a:	55                   	push   %ebp
40793b:	8b ec                	mov    %esp,%ebp
40793d:	53                   	push   %ebx
40793e:	8b 5d 08             	mov    0x8(%ebp),%ebx
407941:	33 c0                	xor    %eax,%eax
407943:	57                   	push   %edi
407944:	50                   	push   %eax
407945:	50                   	push   %eax
407946:	8b 7b 04             	mov    0x4(%ebx),%edi
407949:	47                   	inc    %edi
40794a:	57                   	push   %edi
40794b:	ff 33                	push   (%ebx)
40794d:	6a 01                	push   $0x1
40794f:	50                   	push   %eax
407950:	ff 15 84 f1 48 00    	call   *0x48f184
407956:	89 45 08             	mov    %eax,0x8(%ebp)
407959:	85 c0                	test   %eax,%eax
40795b:	74 44                	je     0x4079a1
40795d:	56                   	push   %esi
40795e:	33 c9                	xor    %ecx,%ecx
407960:	6a 02                	push   $0x2
407962:	5a                   	pop    %edx
407963:	f7 e2                	mul    %edx
407965:	0f 90 c1             	seto   %cl
407968:	f7 d9                	neg    %ecx
40796a:	0b c8                	or     %eax,%ecx
40796c:	51                   	push   %ecx
40796d:	e8 84 96 01 00       	call   0x420ff6
407972:	59                   	pop    %ecx
407973:	ff 75 08             	push   0x8(%ebp)
407976:	8b f0                	mov    %eax,%esi
407978:	56                   	push   %esi
407979:	57                   	push   %edi
40797a:	ff 33                	push   (%ebx)
40797c:	6a 01                	push   $0x1
40797e:	6a 00                	push   $0x0
407980:	ff 15 84 f1 48 00    	call   *0x48f184
407986:	8b 4d 0c             	mov    0xc(%ebp),%ecx
407989:	48                   	dec    %eax
40798a:	50                   	push   %eax
40798b:	6a 00                	push   $0x0
40798d:	56                   	push   %esi
40798e:	e8 1a ff ff ff       	call   0x4078ad
407993:	56                   	push   %esi
407994:	e8 d3 96 01 00       	call   0x42106c
407999:	59                   	pop    %ecx
40799a:	5e                   	pop    %esi
40799b:	5f                   	pop    %edi
40799c:	5b                   	pop    %ebx
40799d:	5d                   	pop    %ebp
40799e:	c2 08 00             	ret    $0x8
4079a1:	8b 4d 0c             	mov    0xc(%ebp),%ecx
4079a4:	e8 43 05 00 00       	call   0x407eec
4079a9:	eb f0                	jmp    0x40799b
4079ab:	55                   	push   %ebp
4079ac:	8b ec                	mov    %esp,%ebp
4079ae:	53                   	push   %ebx
4079af:	56                   	push   %esi
4079b0:	8b 75 10             	mov    0x10(%ebp),%esi
4079b3:	57                   	push   %edi
4079b4:	8b f9                	mov    %ecx,%edi
4079b6:	85 f6                	test   %esi,%esi
4079b8:	74 5d                	je     0x407a17
4079ba:	8b 4d 08             	mov    0x8(%ebp),%ecx
4079bd:	8b 5d 0c             	mov    0xc(%ebp),%ebx
4079c0:	3b 59 04             	cmp    0x4(%ecx),%ebx
4079c3:	73 52                	jae    0x407a17
4079c5:	83 fe ff             	cmp    $0xffffffff,%esi
4079c8:	74 46                	je     0x407a10
4079ca:	8d 04 33             	lea    (%ebx,%esi,1),%eax
4079cd:	3b 41 04             	cmp    0x4(%ecx),%eax
4079d0:	77 3e                	ja     0x407a10
4079d2:	8b 4f 0c             	mov    0xc(%edi),%ecx
4079d5:	8b 01                	mov    (%ecx),%eax
4079d7:	83 f8 01             	cmp    $0x1,%eax
4079da:	0f 8f 52 75 03 00    	jg     0x43ef32
4079e0:	56                   	push   %esi
4079e1:	8b cf                	mov    %edi,%ecx
4079e3:	e8 9f 06 00 00       	call   0x408087
4079e8:	8b 45 08             	mov    0x8(%ebp),%eax
4079eb:	89 77 04             	mov    %esi,0x4(%edi)
4079ee:	03 f6                	add    %esi,%esi
4079f0:	56                   	push   %esi
4079f1:	8b 00                	mov    (%eax),%eax
4079f3:	8d 04 58             	lea    (%eax,%ebx,2),%eax
4079f6:	50                   	push   %eax
4079f7:	ff 37                	push   (%edi)
4079f9:	e8 82 96 01 00       	call   0x421080
4079fe:	8b 07                	mov    (%edi),%eax
407a00:	83 c4 0c             	add    $0xc,%esp
407a03:	33 c9                	xor    %ecx,%ecx
407a05:	66 89 0c 06          	mov    %cx,(%esi,%eax,1)
407a09:	5f                   	pop    %edi
407a0a:	5e                   	pop    %esi
407a0b:	5b                   	pop    %ebx
407a0c:	5d                   	pop    %ebp
407a0d:	c2 0c 00             	ret    $0xc
407a10:	8b 71 04             	mov    0x4(%ecx),%esi
407a13:	2b f3                	sub    %ebx,%esi
407a15:	eb bb                	jmp    0x4079d2
407a17:	6a ff                	push   $0xffffffff
407a19:	6a 00                	push   $0x0
407a1b:	8b cf                	mov    %edi,%ecx
407a1d:	e8 6a 04 00 00       	call   0x407e8c
407a22:	eb e5                	jmp    0x407a09
407a24:	55                   	push   %ebp
407a25:	8b ec                	mov    %esp,%ebp
407a27:	83 7d 18 02          	cmpl   $0x2,0x18(%ebp)
407a2b:	57                   	push   %edi
407a2c:	0f 84 32 75 03 00    	je     0x43ef64
407a32:	83 7d 18 00          	cmpl   $0x0,0x18(%ebp)
407a36:	ff 75 14             	push   0x14(%ebp)
407a39:	ff 75 10             	push   0x10(%ebp)
407a3c:	ff 75 0c             	push   0xc(%ebp)
407a3f:	ff 75 08             	push   0x8(%ebp)
407a42:	6a 01                	push   $0x1
407a44:	75 17                	jne    0x407a5d
407a46:	68 00 04 00 00       	push   $0x400
407a4b:	ff 15 5c f2 48 00    	call   *0x48f25c
407a51:	85 c0                	test   %eax,%eax
407a53:	74 0f                	je     0x407a64
407a55:	83 c0 fe             	add    $0xfffffffe,%eax
407a58:	5f                   	pop    %edi
407a59:	5d                   	pop    %ebp
407a5a:	c2 14 00             	ret    $0x14
407a5d:	68 09 04 00 00       	push   $0x409
407a62:	eb e7                	jmp    0x407a4b
407a64:	33 c0                	xor    %eax,%eax
407a66:	eb f0                	jmp    0x407a58
407a68:	55                   	push   %ebp
407a69:	8b ec                	mov    %esp,%ebp
407a6b:	8b 45 08             	mov    0x8(%ebp),%eax
407a6e:	ff 75 0c             	push   0xc(%ebp)
407a71:	ff 70 04             	push   0x4(%eax)
407a74:	ff 30                	push   (%eax)
407a76:	ff 71 04             	push   0x4(%ecx)
407a79:	ff 31                	push   (%ecx)
407a7b:	e8 a4 ff ff ff       	call   0x407a24
407a80:	5d                   	pop    %ebp
407a81:	c2 08 00             	ret    $0x8
407a84:	55                   	push   %ebp
407a85:	8b ec                	mov    %esp,%ebp
407a87:	51                   	push   %ecx
407a88:	51                   	push   %ecx
407a89:	56                   	push   %esi
407a8a:	57                   	push   %edi
407a8b:	8b f9                	mov    %ecx,%edi