4057b3:	85 c0                	test   %eax,%eax
4057b5:	74 0f                	je     0x4057c6
4057b7:	8a 04 0a             	mov    (%edx,%ecx,1),%al
4057ba:	84 c0                	test   %al,%al
4057bc:	74 08                	je     0x4057c6
4057be:	88 01                	mov    %al,(%ecx)
4057c0:	41                   	inc    %ecx
4057c1:	83 ee 01             	sub    $0x1,%esi
4057c4:	75 ea                	jne    0x4057b0
4057c6:	5f                   	pop    %edi
4057c7:	85 f6                	test   %esi,%esi
4057c9:	75 01                	jne    0x4057cc
4057cb:	49                   	dec    %ecx
4057cc:	f7 de                	neg    %esi
4057ce:	1b f6                	sbb    %esi,%esi
4057d0:	81 e6 86 ff f8 7f    	and    $0x7ff8ff86,%esi
4057d6:	81 c6 7a 00 07 80    	add    $0x8007007a,%esi
4057dc:	eb 04                	jmp    0x4057e2
4057de:	85 d2                	test   %edx,%edx
4057e0:	74 03                	je     0x4057e5
4057e2:	c6 01 00             	movb   $0x0,(%ecx)
4057e5:	8b c6                	mov    %esi,%eax
4057e7:	5e                   	pop    %esi
4057e8:	5d                   	pop    %ebp
4057e9:	c2 04 00             	ret    $0x4
4057ec:	8b ff                	mov    %edi,%edi
4057ee:	55                   	push   %ebp
4057ef:	8b ec                	mov    %esp,%ebp
4057f1:	56                   	push   %esi
4057f2:	57                   	push   %edi
4057f3:	8b f9                	mov    %ecx,%edi
4057f5:	be 04 01 00 00       	mov    $0x104,%esi
4057fa:	8b ce                	mov    %esi,%ecx
4057fc:	8b c7                	mov    %edi,%eax
4057fe:	66 83 38 00          	cmpw   $0x0,(%eax)
405802:	74 08                	je     0x40580c
405804:	83 c0 02             	add    $0x2,%eax
405807:	83 e9 01             	sub    $0x1,%ecx
40580a:	75 f2                	jne    0x4057fe
40580c:	8b c1                	mov    %ecx,%eax
40580e:	f7 d8                	neg    %eax
405810:	1b c0                	sbb    %eax,%eax
405812:	25 a9 ff f8 7f       	and    $0x7ff8ffa9,%eax
405817:	05 57 00 07 80       	add    $0x80070057,%eax
40581c:	85 c9                	test   %ecx,%ecx
40581e:	74 26                	je     0x405846
405820:	8b d1                	mov    %ecx,%edx
405822:	8d 81 fc fe ff ff    	lea    -0x104(%ecx),%eax
405828:	f7 da                	neg    %edx
40582a:	51                   	push   %ecx
40582b:	ff 75 08             	push   0x8(%ebp)
40582e:	1b d2                	sbb    %edx,%edx
405830:	23 d0                	and    %eax,%edx
405832:	03 d6                	add    %esi,%edx
405834:	2b f1                	sub    %ecx,%esi
405836:	51                   	push   %ecx
405837:	03 f6                	add    %esi,%esi
405839:	f7 d9                	neg    %ecx
40583b:	1b c9                	sbb    %ecx,%ecx
40583d:	23 ce                	and    %esi,%ecx
40583f:	03 cf                	add    %edi,%ecx
405841:	e8 81 00 00 00       	call   0x4058c7
405846:	5f                   	pop    %edi
405847:	5e                   	pop    %esi
405848:	5d                   	pop    %ebp
405849:	c2 04 00             	ret    $0x4
40584c:	8b ff                	mov    %edi,%edi
40584e:	55                   	push   %ebp
40584f:	8b ec                	mov    %esp,%ebp
405851:	33 c0                	xor    %eax,%eax
405853:	85 d2                	test   %edx,%edx
405855:	74 08                	je     0x40585f
405857:	81 fa ff ff ff 7f    	cmp    $0x7fffffff,%edx
40585d:	76 05                	jbe    0x405864
40585f:	b8 57 00 07 80       	mov    $0x80070057,%eax
405864:	85 c0                	test   %eax,%eax
405866:	78 0e                	js     0x405876
405868:	ff 75 0c             	push   0xc(%ebp)
40586b:	ff 75 08             	push   0x8(%ebp)
40586e:	51                   	push   %ecx
40586f:	e8 a3 00 00 00       	call   0x405917
405874:	eb 09                	jmp    0x40587f
405876:	85 d2                	test   %edx,%edx
405878:	74 05                	je     0x40587f
40587a:	33 d2                	xor    %edx,%edx
40587c:	66 89 11             	mov    %dx,(%ecx)
40587f:	5d                   	pop    %ebp
405880:	c2 08 00             	ret    $0x8
405883:	8b ff                	mov    %edi,%edi
405885:	55                   	push   %ebp
405886:	8b ec                	mov    %esp,%ebp
405888:	8b 45 0c             	mov    0xc(%ebp),%eax
40588b:	33 c9                	xor    %ecx,%ecx
40588d:	85 c0                	test   %eax,%eax
40588f:	74 07                	je     0x405898
405891:	3d ff ff ff 7f       	cmp    $0x7fffffff,%eax
405896:	76 05                	jbe    0x40589d
405898:	b9 57 00 07 80       	mov    $0x80070057,%ecx
40589d:	85 c9                	test   %ecx,%ecx
40589f:	78 16                	js     0x4058b7
4058a1:	8d 4d 14             	lea    0x14(%ebp),%ecx
4058a4:	8b d0                	mov    %eax,%edx
4058a6:	51                   	push   %ecx
4058a7:	ff 75 10             	push   0x10(%ebp)
4058aa:	51                   	push   %ecx
4058ab:	8b 4d 08             	mov    0x8(%ebp),%ecx
4058ae:	e8 64 00 00 00       	call   0x405917
4058b3:	8b c8                	mov    %eax,%ecx
4058b5:	eb 0c                	jmp    0x4058c3
4058b7:	85 c0                	test   %eax,%eax
4058b9:	74 08                	je     0x4058c3
4058bb:	8b 45 08             	mov    0x8(%ebp),%eax
4058be:	33 d2                	xor    %edx,%edx
4058c0:	66 89 10             	mov    %dx,(%eax)
4058c3:	8b c1                	mov    %ecx,%eax
4058c5:	5d                   	pop    %ebp
4058c6:	c3                   	ret
4058c7:	8b ff                	mov    %edi,%edi
4058c9:	55                   	push   %ebp
4058ca:	8b ec                	mov    %esp,%ebp
4058cc:	85 d2                	test   %edx,%edx
4058ce:	74 2b                	je     0x4058fb
4058d0:	8b 45 0c             	mov    0xc(%ebp),%eax
4058d3:	56                   	push   %esi
4058d4:	57                   	push   %edi
4058d5:	be fe ff ff 7f       	mov    $0x7ffffffe,%esi
4058da:	2b c1                	sub    %ecx,%eax
4058dc:	85 f6                	test   %esi,%esi
4058de:	74 15                	je     0x4058f5
4058e0:	0f b7 3c 08          	movzwl (%eax,%ecx,1),%edi
4058e4:	66 85 ff             	test   %di,%di
4058e7:	74 0c                	je     0x4058f5
4058e9:	66 89 39             	mov    %di,(%ecx)
4058ec:	83 c1 02             	add    $0x2,%ecx
4058ef:	4e                   	dec    %esi
4058f0:	83 ea 01             	sub    $0x1,%edx
4058f3:	75 e7                	jne    0x4058dc
4058f5:	5f                   	pop    %edi
4058f6:	5e                   	pop    %esi
4058f7:	85 d2                	test   %edx,%edx
4058f9:	75 03                	jne    0x4058fe
4058fb:	83 e9 02             	sub    $0x2,%ecx
4058fe:	f7 da                	neg    %edx
405900:	1b d2                	sbb    %edx,%edx
405902:	81 e2 86 ff f8 7f    	and    $0x7ff8ff86,%edx
405908:	33 c0                	xor    %eax,%eax
40590a:	66 89 01             	mov    %ax,(%ecx)
40590d:	8d 82 7a 00 07 80    	lea    -0x7ff8ff86(%edx),%eax
405913:	5d                   	pop    %ebp
405914:	c2 0c 00             	ret    $0xc
405917:	8b ff                	mov    %edi,%edi
405919:	55                   	push   %ebp
40591a:	8b ec                	mov    %esp,%ebp
40591c:	53                   	push   %ebx
40591d:	56                   	push   %esi
40591e:	57                   	push   %edi
40591f:	ff 75 10             	push   0x10(%ebp)
405922:	8d 72 ff             	lea    -0x1(%edx),%esi
405925:	8b f9                	mov    %ecx,%edi
405927:	ff 75 0c             	push   0xc(%ebp)
40592a:	33 db                	xor    %ebx,%ebx
40592c:	56                   	push   %esi
40592d:	57                   	push   %edi
40592e:	ff 15 c8 b2 41 00    	call   *0x41b2c8
405934:	83 c4 10             	add    $0x10,%esp
405937:	85 c0                	test   %eax,%eax
405939:	78 08                	js     0x405943
40593b:	3b c6                	cmp    %esi,%eax
40593d:	77 04                	ja     0x405943
40593f:	75 0d                	jne    0x40594e
405941:	eb 05                	jmp    0x405948
405943:	bb 7a 00 07 80       	mov    $0x8007007a,%ebx
405948:	33 c0                	xor    %eax,%eax
40594a:	66 89 04 77          	mov    %ax,(%edi,%esi,2)
40594e:	5f                   	pop    %edi
40594f:	5e                   	pop    %esi
405950:	8b c3                	mov    %ebx,%eax
405952:	5b                   	pop    %ebx
405953:	5d                   	pop    %ebp
405954:	c2 0c 00             	ret    $0xc
405957:	8b ff                	mov    %edi,%edi
405959:	55                   	push   %ebp
40595a:	8b ec                	mov    %esp,%ebp
40595c:	8b 55 0c             	mov    0xc(%ebp),%edx
40595f:	8d 45 14             	lea    0x14(%ebp),%eax
405962:	56                   	push   %esi
405963:	8b 75 08             	mov    0x8(%ebp),%esi
405966:	2b d6                	sub    %esi,%edx
405968:	50                   	push   %eax
405969:	ff 75 10             	push   0x10(%ebp)
40596c:	d1 fa                	sar    $1,%edx
40596e:	8b ce                	mov    %esi,%ecx
405970:	e8 d7 fe ff ff       	call   0x40584c
405975:	39 75 0c             	cmp    %esi,0xc(%ebp)
405978:	74 17                	je     0x405991
40597a:	8b ce                	mov    %esi,%ecx
40597c:	8d 51 02             	lea    0x2(%ecx),%edx
40597f:	66 8b 01             	mov    (%ecx),%ax
405982:	83 c1 02             	add    $0x2,%ecx
405985:	66 85 c0             	test   %ax,%ax
405988:	75 f5                	jne    0x40597f
40598a:	2b ca                	sub    %edx,%ecx
40598c:	d1 f9                	sar    $1,%ecx
40598e:	8d 34 4e             	lea    (%esi,%ecx,2),%esi
405991:	8b c6                	mov    %esi,%eax
405993:	5e                   	pop    %esi
405994:	5d                   	pop    %ebp
405995:	c3                   	ret
405996:	8b ff                	mov    %edi,%edi
405998:	55                   	push   %ebp
405999:	8b ec                	mov    %esp,%ebp
40599b:	81 ec 0c 02 00 00    	sub    $0x20c,%esp
4059a1:	a1 18 51 41 00       	mov    0x415118,%eax
4059a6:	33 c5                	xor    %ebp,%eax
4059a8:	89 45 fc             	mov    %eax,-0x4(%ebp)
4059ab:	53                   	push   %ebx
4059ac:	8b d9                	mov    %ecx,%ebx
4059ae:	8b c2                	mov    %edx,%eax
4059b0:	89 85 f4 fd ff ff    	mov    %eax,-0x20c(%ebp)
4059b6:	56                   	push   %esi
4059b7:	8b 75 08             	mov    0x8(%ebp),%esi
4059ba:	85 db                	test   %ebx,%ebx
4059bc:	0f 84 c2 01 00 00    	je     0x405b84
4059c2:	57                   	push   %edi
4059c3:	8b 3d 18 97 41 00    	mov    0x419718,%edi
4059c9:	33 c9                	xor    %ecx,%ecx
4059cb:	66 89 0b             	mov    %cx,(%ebx)
4059ce:	85 ff                	test   %edi,%edi
4059d0:	74 20                	je     0x4059f2
4059d2:	38 0d 24 97 41 00    	cmp    %cl,0x419724
4059d8:	74 18                	je     0x4059f2
4059da:	50                   	push   %eax
4059db:	53                   	push   %ebx
4059dc:	56                   	push   %esi
4059dd:	8b cf                	mov    %edi,%ecx
4059df:	ff 15 90 b3 41 00    	call   *0x41b390
4059e5:	ff d7                	call   *%edi
4059e7:	33 c9                	xor    %ecx,%ecx
4059e9:	66 39 0b             	cmp    %cx,(%ebx)
4059ec:	0f 85 91 01 00 00    	jne    0x405b83
4059f2:	8b 06                	mov    (%esi),%eax
4059f4:	c7 85 f8 fd ff ff 18 	movl   $0x402518,-0x208(%ebp)
4059fb:	25 40 00
4059fe:	2b c1                	sub    %ecx,%eax
405a00:	74 33                	je     0x405a35
405a02:	83 e8 01             	sub    $0x1,%eax
405a05:	74 22                	je     0x405a29
405a07:	83 e8 01             	sub    $0x1,%eax
405a0a:	74 11                	je     0x405a1d
405a0c:	83 e8 01             	sub    $0x1,%eax
405a0f:	75 2e                	jne    0x405a3f
405a11:	c7 85 f8 fd ff ff 80 	movl   $0x402580,-0x208(%ebp)
405a18:	25 40 00
405a1b:	eb 22                	jmp    0x405a3f
405a1d:	c7 85 f8 fd ff ff 78 	movl   $0x402578,-0x208(%ebp)
405a24:	25 40 00
405a27:	eb 16                	jmp    0x405a3f
405a29:	c7 85 f8 fd ff ff 6c 	movl   $0x40256c,-0x208(%ebp)
405a30:	25 40 00
405a33:	eb 0a                	jmp    0x405a3f
405a35:	c7 85 f8 fd ff ff 60 	movl   $0x402560,-0x208(%ebp)
405a3c:	25 40 00
405a3f:	51                   	push   %ecx
405a40:	33 c0                	xor    %eax,%eax
405a42:	68 00 01 00 00       	push   $0x100
405a47:	66 89 85 fc fd ff ff 	mov    %ax,-0x204(%ebp)
405a4e:	8d 85 fc fd ff ff    	lea    -0x204(%ebp),%eax
405a54:	50                   	push   %eax
405a55:	68 00 04 00 00       	push   $0x400
405a5a:	ff 76 04             	push   0x4(%esi)
405a5d:	51                   	push   %ecx
405a5e:	68 00 12 00 00       	push   $0x1200
405a63:	ff 15 40 b1 41 00    	call   *0x41b140
405a69:	83 7e 1c 00          	cmpl   $0x0,0x1c(%esi)
405a6d:	8b 85 f4 fd ff ff    	mov    -0x20c(%ebp),%eax
405a73:	ff 76 48             	push   0x48(%esi)
405a76:	ff 76 44             	push   0x44(%esi)
405a79:	8d 3c 43             	lea    (%ebx,%eax,2),%edi
405a7c:	74 17                	je     0x405a95
405a7e:	ff 76 20             	push   0x20(%esi)
405a81:	ff 76 1c             	push   0x1c(%esi)
405a84:	68 8c 25 40 00       	push   $0x40258c
405a89:	57                   	push   %edi
405a8a:	53                   	push   %ebx
405a8b:	e8 c7 fe ff ff       	call   0x405957
405a90:	83 c4 1c             	add    $0x1c,%esp
405a93:	eb 0f                	jmp    0x405aa4
405a95:	68 b0 25 40 00       	push   $0x4025b0
405a9a:	57                   	push   %edi
405a9b:	53                   	push   %ebx
405a9c:	e8 b6 fe ff ff       	call   0x405957
405aa1:	83 c4 14             	add    $0x14,%esp
405aa4:	83 7e 4c 00          	cmpl   $0x0,0x4c(%esi)
405aa8:	8b d8                	mov    %eax,%ebx
405aaa:	74 14                	je     0x405ac0
405aac:	ff 76 4c             	push   0x4c(%esi)
405aaf:	68 c4 25 40 00       	push   $0x4025c4
405ab4:	57                   	push   %edi
405ab5:	53                   	push   %ebx
405ab6:	e8 9c fe ff ff       	call   0x405957
405abb:	83 c4 10             	add    $0x10,%esp
405abe:	8b d8                	mov    %eax,%ebx
405ac0:	8d 85 fc fd ff ff    	lea    -0x204(%ebp),%eax
405ac6:	50                   	push   %eax
405ac7:	ff 76 04             	push   0x4(%esi)
405aca:	ff 15 38 b1 41 00    	call   *0x41b138
405ad0:	50                   	push   %eax
405ad1:	ff 76 24             	push   0x24(%esi)
405ad4:	ff b5 f8 fd ff ff    	push   -0x208(%ebp)
405ada:	68 e0 25 40 00       	push   $0x4025e0
405adf:	57                   	push   %edi
405ae0:	53                   	push   %ebx
405ae1:	e8 71 fe ff ff       	call   0x405957
405ae6:	33 c9                	xor    %ecx,%ecx
405ae8:	83 c4 20             	add    $0x20,%esp
405aeb:	39 4e 0c             	cmp    %ecx,0xc(%esi)
405aee:	75 0e                	jne    0x405afe
405af0:	39 4e 28             	cmp    %ecx,0x28(%esi)
405af3:	75 09                	jne    0x405afe
405af5:	39 4e 18             	cmp    %ecx,0x18(%esi)
405af8:	0f 84 85 00 00 00    	je     0x405b83
405afe:	68 14 26 40 00       	push   $0x402614
405b03:	57                   	push   %edi
405b04:	50                   	push   %eax
405b05:	e8 4d fe ff ff       	call   0x405957
405b0a:	83 c4 0c             	add    $0xc,%esp
405b0d:	83 7e 0c 00          	cmpl   $0x0,0xc(%esi)
405b11:	74 12                	je     0x405b25
405b13:	ff 76 0c             	push   0xc(%esi)
405b16:	68 20 26 40 00       	push   $0x402620
405b1b:	57                   	push   %edi
405b1c:	50                   	push   %eax
405b1d:	e8 35 fe ff ff       	call   0x405957
405b22:	83 c4 10             	add    $0x10,%esp
405b25:	83 7e 28 00          	cmpl   $0x0,0x28(%esi)
405b29:	74 12                	je     0x405b3d
405b2b:	ff 76 28             	push   0x28(%esi)
405b2e:	68 38 26 40 00       	push   $0x402638
405b33:	57                   	push   %edi
405b34:	50                   	push   %eax
405b35:	e8 1d fe ff ff       	call   0x405957
405b3a:	83 c4 10             	add    $0x10,%esp
405b3d:	83 7e 14 00          	cmpl   $0x0,0x14(%esi)
405b41:	74 17                	je     0x405b5a
405b43:	ff 76 14             	push   0x14(%esi)
405b46:	ff 76 18             	push   0x18(%esi)
405b49:	68 60 26 40 00       	push   $0x402660
405b4e:	57                   	push   %edi
405b4f:	50                   	push   %eax
405b50:	e8 02 fe ff ff       	call   0x405957