45774c:	8b 08                	mov    (%eax),%ecx
45774e:	ff 51 20             	call   *0x20(%ecx)
457751:	85 c0                	test   %eax,%eax
457753:	8b 45 fc             	mov    -0x4(%ebp),%eax
457756:	79 0a                	jns    0x457762
457758:	be 05 40 00 80       	mov    $0x80004005,%esi
45775d:	e9 a9 02 00 00       	jmp    0x457a0b
457762:	8d 55 f0             	lea    -0x10(%ebp),%edx
457765:	89 5d f0             	mov    %ebx,-0x10(%ebp)
457768:	8b 08                	mov    (%eax),%ecx
45776a:	52                   	push   %edx
45776b:	ff 75 e8             	push   -0x18(%ebp)
45776e:	50                   	push   %eax
45776f:	ff 51 38             	call   *0x38(%ecx)
457772:	85 c0                	test   %eax,%eax
457774:	79 07                	jns    0x45777d
457776:	be 05 40 00 80       	mov    $0x80004005,%esi
45777b:	eb 3b                	jmp    0x4577b8
45777d:	8b 45 fc             	mov    -0x4(%ebp),%eax
457780:	8b 75 f0             	mov    -0x10(%ebp),%esi
457783:	3b c6                	cmp    %esi,%eax
457785:	74 21                	je     0x4577a8
457787:	85 f6                	test   %esi,%esi
457789:	74 09                	je     0x457794
45778b:	8b 06                	mov    (%esi),%eax
45778d:	56                   	push   %esi
45778e:	ff 50 04             	call   *0x4(%eax)
457791:	8b 45 fc             	mov    -0x4(%ebp),%eax
457794:	8b c8                	mov    %eax,%ecx
457796:	8b c6                	mov    %esi,%eax
457798:	89 45 fc             	mov    %eax,-0x4(%ebp)
45779b:	85 c9                	test   %ecx,%ecx
45779d:	74 09                	je     0x4577a8
45779f:	8b 01                	mov    (%ecx),%eax
4577a1:	51                   	push   %ecx
4577a2:	ff 50 08             	call   *0x8(%eax)
4577a5:	8b 45 fc             	mov    -0x4(%ebp),%eax
4577a8:	8b 08                	mov    (%eax),%ecx
4577aa:	8d 55 f4             	lea    -0xc(%ebp),%edx
4577ad:	52                   	push   %edx
4577ae:	50                   	push   %eax
4577af:	ff 51 0c             	call   *0xc(%ecx)
4577b2:	8b f0                	mov    %eax,%esi
4577b4:	85 f6                	test   %esi,%esi
4577b6:	79 16                	jns    0x4577ce
4577b8:	8b 45 f0             	mov    -0x10(%ebp),%eax
4577bb:	85 c0                	test   %eax,%eax
4577bd:	0f 84 45 02 00 00    	je     0x457a08
4577c3:	8b 08                	mov    (%eax),%ecx
4577c5:	50                   	push   %eax
4577c6:	ff 51 08             	call   *0x8(%ecx)
4577c9:	e9 3a 02 00 00       	jmp    0x457a08
4577ce:	8b 45 f0             	mov    -0x10(%ebp),%eax
4577d1:	85 c0                	test   %eax,%eax
4577d3:	74 06                	je     0x4577db
4577d5:	8b 08                	mov    (%eax),%ecx
4577d7:	50                   	push   %eax
4577d8:	ff 51 08             	call   *0x8(%ecx)
4577db:	8b 45 fc             	mov    -0x4(%ebp),%eax
4577de:	8d 55 ec             	lea    -0x14(%ebp),%edx
4577e1:	83 4d ec ff          	orl    $0xffffffff,-0x14(%ebp)
4577e5:	52                   	push   %edx
4577e6:	6a 01                	push   $0x1
4577e8:	8b 08                	mov    (%eax),%ecx
4577ea:	8d 55 08             	lea    0x8(%ebp),%edx
4577ed:	52                   	push   %edx
4577ee:	50                   	push   %eax
4577ef:	ff 51 28             	call   *0x28(%ecx)
4577f2:	85 c0                	test   %eax,%eax
4577f4:	79 2b                	jns    0x457821
4577f6:	8b 45 fc             	mov    -0x4(%ebp),%eax
4577f9:	8d 55 e8             	lea    -0x18(%ebp),%edx
4577fc:	52                   	push   %edx
4577fd:	6a 01                	push   $0x1
4577ff:	8d 55 f0             	lea    -0x10(%ebp),%edx
457802:	89 5d f0             	mov    %ebx,-0x10(%ebp)
457805:	8b 08                	mov    (%eax),%ecx
457807:	52                   	push   %edx
457808:	57                   	push   %edi
457809:	50                   	push   %eax
45780a:	ff 51 1c             	call   *0x1c(%ecx)
45780d:	85 c0                	test   %eax,%eax
45780f:	0f 88 8d 00 00 00    	js     0x4578a2
457815:	ff 75 f0             	push   -0x10(%ebp)
457818:	ff 15 18 f4 48 00    	call   *0x48f418
45781e:	89 7d ec             	mov    %edi,-0x14(%ebp)
457821:	8b 45 f4             	mov    -0xc(%ebp),%eax
457824:	33 c9                	xor    %ecx,%ecx
457826:	8b fb                	mov    %ebx,%edi
457828:	66 3b 48 2c          	cmp    0x2c(%eax),%cx
45782c:	73 42                	jae    0x457870
45782e:	8b 45 fc             	mov    -0x4(%ebp),%eax
457831:	8d 4d f8             	lea    -0x8(%ebp),%ecx
457834:	51                   	push   %ecx
457835:	0f b7 cf             	movzwl %di,%ecx
457838:	51                   	push   %ecx
457839:	8b 10                	mov    (%eax),%edx
45783b:	50                   	push   %eax
45783c:	ff 52 14             	call   *0x14(%edx)
45783f:	8b f0                	mov    %eax,%esi
457841:	85 f6                	test   %esi,%esi
457843:	0f 88 df 00 00 00    	js     0x457928
457849:	8b 55 f8             	mov    -0x8(%ebp),%edx
45784c:	f6 42 10 03          	testb  $0x3,0x10(%edx)
457850:	74 07                	je     0x457859
457852:	8b 02                	mov    (%edx),%eax
457854:	3b 45 ec             	cmp    -0x14(%ebp),%eax
457857:	74 17                	je     0x457870
457859:	8b 45 fc             	mov    -0x4(%ebp),%eax
45785c:	52                   	push   %edx
45785d:	50                   	push   %eax
45785e:	8b 08                	mov    (%eax),%ecx
457860:	ff 51 50             	call   *0x50(%ecx)
457863:	8b 45 f4             	mov    -0xc(%ebp),%eax
457866:	47                   	inc    %edi
457867:	89 5d f8             	mov    %ebx,-0x8(%ebp)
45786a:	66 3b 78 2c          	cmp    0x2c(%eax),%di
45786e:	72 be                	jb     0x45782e
457870:	8b 45 fc             	mov    -0x4(%ebp),%eax
457873:	ff 75 f4             	push   -0xc(%ebp)
457876:	50                   	push   %eax
457877:	8b 08                	mov    (%eax),%ecx
457879:	ff 51 4c             	call   *0x4c(%ecx)
45787c:	8b 55 f8             	mov    -0x8(%ebp),%edx
45787f:	85 d2                	test   %edx,%edx
457881:	74 15                	je     0x457898
457883:	66 83 7a 18 20       	cmpw   $0x20,0x18(%edx)
457888:	0f 8e ab 00 00 00    	jle    0x457939
45788e:	8b 45 fc             	mov    -0x4(%ebp),%eax
457891:	52                   	push   %edx
457892:	50                   	push   %eax
457893:	8b 08                	mov    (%eax),%ecx
457895:	ff 51 50             	call   *0x50(%ecx)
457898:	be 05 40 00 80       	mov    $0x80004005,%esi
45789d:	e9 66 01 00 00       	jmp    0x457a08
4578a2:	8b 45 f4             	mov    -0xc(%ebp),%eax
4578a5:	33 c9                	xor    %ecx,%ecx
4578a7:	8b fb                	mov    %ebx,%edi
4578a9:	66 3b 48 2c          	cmp    0x2c(%eax),%cx
4578ad:	73 c1                	jae    0x457870
4578af:	8b 1d 18 f4 48 00    	mov    0x48f418,%ebx
4578b5:	8b 45 fc             	mov    -0x4(%ebp),%eax
4578b8:	8d 4d f8             	lea    -0x8(%ebp),%ecx
4578bb:	51                   	push   %ecx
4578bc:	0f b7 cf             	movzwl %di,%ecx
4578bf:	51                   	push   %ecx
4578c0:	8b 10                	mov    (%eax),%edx
4578c2:	50                   	push   %eax
4578c3:	ff 52 14             	call   *0x14(%edx)
4578c6:	8b f0                	mov    %eax,%esi
4578c8:	8b 45 fc             	mov    -0x4(%ebp),%eax
4578cb:	85 f6                	test   %esi,%esi
4578cd:	78 5c                	js     0x45792b
4578cf:	8b 10                	mov    (%eax),%edx
4578d1:	8d 4d f0             	lea    -0x10(%ebp),%ecx
4578d4:	33 f6                	xor    %esi,%esi
4578d6:	56                   	push   %esi
4578d7:	56                   	push   %esi
4578d8:	56                   	push   %esi
4578d9:	51                   	push   %ecx
4578da:	8b 4d f8             	mov    -0x8(%ebp),%ecx
4578dd:	ff 31                	push   (%ecx)
4578df:	50                   	push   %eax
4578e0:	ff 52 30             	call   *0x30(%edx)
4578e3:	8b 45 f8             	mov    -0x8(%ebp),%eax
4578e6:	f6 40 10 03          	testb  $0x3,0x10(%eax)
4578ea:	74 10                	je     0x4578fc
4578ec:	ff 75 08             	push   0x8(%ebp)
4578ef:	ff 75 f0             	push   -0x10(%ebp)
4578f2:	ff 15 38 f3 48 00    	call   *0x48f338
4578f8:	85 c0                	test   %eax,%eax
4578fa:	74 20                	je     0x45791c
4578fc:	ff 75 f0             	push   -0x10(%ebp)
4578ff:	ff d3                	call   *%ebx
457901:	8b 45 fc             	mov    -0x4(%ebp),%eax
457904:	ff 75 f8             	push   -0x8(%ebp)
457907:	50                   	push   %eax
457908:	8b 08                	mov    (%eax),%ecx
45790a:	ff 51 50             	call   *0x50(%ecx)
45790d:	8b 45 f4             	mov    -0xc(%ebp),%eax
457910:	47                   	inc    %edi
457911:	89 75 f8             	mov    %esi,-0x8(%ebp)
457914:	66 3b 78 2c          	cmp    0x2c(%eax),%di
457918:	72 9b                	jb     0x4578b5
45791a:	eb 05                	jmp    0x457921
45791c:	ff 75 f0             	push   -0x10(%ebp)
45791f:	ff d3                	call   *%ebx
457921:	33 db                	xor    %ebx,%ebx
457923:	e9 48 ff ff ff       	jmp    0x457870
457928:	8b 45 fc             	mov    -0x4(%ebp),%eax
45792b:	ff 75 f4             	push   -0xc(%ebp)
45792e:	8b 08                	mov    (%eax),%ecx
457930:	50                   	push   %eax
457931:	ff 51 4c             	call   *0x4c(%ecx)
457934:	e9 cf 00 00 00       	jmp    0x457a08
457939:	8b 75 10             	mov    0x10(%ebp),%esi
45793c:	33 c0                	xor    %eax,%eax
45793e:	c7 06 01 00 00 00    	movl   $0x1,(%esi)
457944:	66 3b 42 18          	cmp    0x18(%edx),%ax
457948:	7d 77                	jge    0x4579c1
45794a:	33 ff                	xor    %edi,%edi
45794c:	83 c6 10             	add    $0x10,%esi
45794f:	8b 42 08             	mov    0x8(%edx),%eax
457952:	0f b7 44 38 04       	movzwl 0x4(%eax,%edi,1),%eax
457957:	66 89 06             	mov    %ax,(%esi)
45795a:	83 f8 1a             	cmp    $0x1a,%eax
45795d:	75 12                	jne    0x457971
45795f:	8b 42 08             	mov    0x8(%edx),%eax
457962:	b9 00 40 00 00       	mov    $0x4000,%ecx
457967:	8b 04 38             	mov    (%eax,%edi,1),%eax
45796a:	66 0b 48 04          	or     0x4(%eax),%cx
45796e:	66 89 0e             	mov    %cx,(%esi)
457971:	66 83 3e 1b          	cmpw   $0x1b,(%esi)
457975:	75 12                	jne    0x457989
457977:	8b 42 08             	mov    0x8(%edx),%eax
45797a:	b9 00 20 00 00       	mov    $0x2000,%ecx
45797f:	8b 04 38             	mov    (%eax,%edi,1),%eax
457982:	66 0b 48 04          	or     0x4(%eax),%cx
457986:	66 89 0e             	mov    %cx,(%esi)
457989:	66 83 3e 1d          	cmpw   $0x1d,(%esi)
45798d:	75 14                	jne    0x4579a3
45798f:	8b 52 08             	mov    0x8(%edx),%edx
457992:	8b 4d fc             	mov    -0x4(%ebp),%ecx
457995:	8b 14 3a             	mov    (%edx,%edi,1),%edx
457998:	e8 dc fb ff ff       	call   0x457579
45799d:	8b 55 f8             	mov    -0x8(%ebp),%edx
4579a0:	66 89 06             	mov    %ax,(%esi)
4579a3:	8b 42 08             	mov    0x8(%edx),%eax
4579a6:	43                   	inc    %ebx
4579a7:	66 8b 44 38 0c       	mov    0xc(%eax,%edi,1),%ax
4579ac:	83 c7 10             	add    $0x10,%edi
4579af:	66 89 46 02          	mov    %ax,0x2(%esi)
4579b3:	83 c6 04             	add    $0x4,%esi
4579b6:	0f bf 42 18          	movswl 0x18(%edx),%eax
4579ba:	3b d8                	cmp    %eax,%ebx
4579bc:	7c 91                	jl     0x45794f
4579be:	8b 75 10             	mov    0x10(%ebp),%esi
4579c1:	0f b7 4a 24          	movzwl 0x24(%edx),%ecx
4579c5:	8b c1                	mov    %ecx,%eax
4579c7:	83 e8 16             	sub    $0x16,%eax
4579ca:	74 15                	je     0x4579e1
4579cc:	48                   	dec    %eax
4579cd:	74 0e                	je     0x4579dd
4579cf:	48                   	dec    %eax
4579d0:	74 07                	je     0x4579d9
4579d2:	48                   	dec    %eax
4579d3:	75 0f                	jne    0x4579e4
4579d5:	6a 0a                	push   $0xa
4579d7:	eb 0a                	jmp    0x4579e3
4579d9:	33 c9                	xor    %ecx,%ecx
4579db:	eb 07                	jmp    0x4579e4
4579dd:	6a 13                	push   $0x13
4579df:	eb 02                	jmp    0x4579e3
4579e1:	6a 03                	push   $0x3
4579e3:	59                   	pop    %ecx
4579e4:	66 89 4e 0c          	mov    %cx,0xc(%esi)
4579e8:	8b 42 10             	mov    0x10(%edx),%eax
4579eb:	89 46 04             	mov    %eax,0x4(%esi)
4579ee:	8b 42 14             	mov    0x14(%edx),%eax
4579f1:	89 46 08             	mov    %eax,0x8(%esi)
4579f4:	66 8b 42 18          	mov    0x18(%edx),%ax
4579f8:	66 89 46 0e          	mov    %ax,0xe(%esi)
4579fc:	8b 45 fc             	mov    -0x4(%ebp),%eax
4579ff:	52                   	push   %edx
457a00:	50                   	push   %eax
457a01:	8b 08                	mov    (%eax),%ecx
457a03:	ff 51 50             	call   *0x50(%ecx)
457a06:	33 f6                	xor    %esi,%esi
457a08:	8b 45 fc             	mov    -0x4(%ebp),%eax
457a0b:	85 c0                	test   %eax,%eax
457a0d:	74 06                	je     0x457a15
457a0f:	8b 08                	mov    (%eax),%ecx
457a11:	50                   	push   %eax
457a12:	ff 51 08             	call   *0x8(%ecx)
457a15:	5f                   	pop    %edi
457a16:	8b c6                	mov    %esi,%eax
457a18:	5e                   	pop    %esi
457a19:	5b                   	pop    %ebx
457a1a:	8b e5                	mov    %ebp,%esp
457a1c:	5d                   	pop    %ebp
457a1d:	c3                   	ret
457a1e:	55                   	push   %ebp
457a1f:	8b ec                	mov    %esp,%ebp
457a21:	51                   	push   %ecx
457a22:	53                   	push   %ebx
457a23:	56                   	push   %esi
457a24:	57                   	push   %edi
457a25:	8b fa                	mov    %edx,%edi
457a27:	33 f6                	xor    %esi,%esi
457a29:	8b d9                	mov    %ecx,%ebx
457a2b:	85 ff                	test   %edi,%edi
457a2d:	74 3b                	je     0x457a6a
457a2f:	57                   	push   %edi
457a30:	e8 07 b4 fc ff       	call   0x422e3c
457a35:	59                   	pop    %ecx
457a36:	85 c0                	test   %eax,%eax
457a38:	74 30                	je     0x457a6a
457a3a:	8b cf                	mov    %edi,%ecx
457a3c:	e8 85 84 fc ff       	call   0x41fec6
457a41:	ff 75 08             	push   0x8(%ebp)
457a44:	8d 4d fc             	lea    -0x4(%ebp),%ecx
457a47:	89 45 fc             	mov    %eax,-0x4(%ebp)
457a4a:	8b 03                	mov    (%ebx),%eax
457a4c:	68 00 08 00 00       	push   $0x800
457a51:	6a 01                	push   $0x1
457a53:	51                   	push   %ecx
457a54:	68 2c 2c 49 00       	push   $0x492c2c
457a59:	53                   	push   %ebx
457a5a:	ff 50 14             	call   *0x14(%eax)
457a5d:	ff 75 fc             	push   -0x4(%ebp)
457a60:	8b f0                	mov    %eax,%esi
457a62:	e8 49 b6 fc ff       	call   0x4230b0
457a67:	59                   	pop    %ecx
457a68:	eb 05                	jmp    0x457a6f
457a6a:	8b 45 08             	mov    0x8(%ebp),%eax
457a6d:	89 30                	mov    %esi,(%eax)
457a6f:	5f                   	pop    %edi
457a70:	8b c6                	mov    %esi,%eax
457a72:	5e                   	pop    %esi
457a73:	5b                   	pop    %ebx
457a74:	8b e5                	mov    %ebp,%esp
457a76:	5d                   	pop    %ebp
457a77:	c3                   	ret
457a78:	55                   	push   %ebp
457a79:	8b ec                	mov    %esp,%ebp
457a7b:	83 ec 54             	sub    $0x54,%esp
457a7e:	83 65 fc 00          	andl   $0x0,-0x4(%ebp)
457a82:	53                   	push   %ebx
457a83:	56                   	push   %esi
457a84:	57                   	push   %edi
457a85:	be 2c 2c 49 00       	mov    $0x492c2c,%esi
457a8a:	89 55 cc             	mov    %edx,-0x34(%ebp)
457a8d:	8d 7d ac             	lea    -0x54(%ebp),%edi
457a90:	8b d9                	mov    %ecx,%ebx
457a92:	8d 4d d8             	lea    -0x28(%ebp),%ecx
457a95:	51                   	push   %ecx
457a96:	a5                   	movsl  %ds:(%esi),%es:(%edi)
457a97:	8b 03                	mov    (%ebx),%eax
457a99:	68 7c 2c 49 00       	push   $0x492c7c
457a9e:	53                   	push   %ebx
457a9f:	a5                   	movsl  %ds:(%esi),%es:(%edi)
457aa0:	a5                   	movsl  %ds:(%esi),%es:(%edi)
457aa1:	a5                   	movsl  %ds:(%esi),%es:(%edi)
457aa2:	ff 10                	call   *(%eax)
457aa4:	8d 4d fc             	lea    -0x4(%ebp),%ecx
457aa7:	51                   	push   %ecx
457aa8:	85 c0                	test   %eax,%eax
457aaa:	78 13                	js     0x457abf
457aac:	8b 75 d8             	mov    -0x28(%ebp),%esi
457aaf:	56                   	push   %esi