502921:	8b f9                	mov    %ecx,%edi
502923:	0f 86 88 01 00 00    	jbe    0x502ab1
502929:	8b 4d d0             	mov    -0x30(%ebp),%ecx
50292c:	8b 45 bc             	mov    -0x44(%ebp),%eax
50292f:	0f bf 14 41          	movswl (%ecx,%eax,2),%edx
502933:	8b 45 bc             	mov    -0x44(%ebp),%eax
502936:	8b 4d d0             	mov    -0x30(%ebp),%ecx
502939:	03 fa                	add    %edx,%edi
50293b:	0f bf 54 41 02       	movswl 0x2(%ecx,%eax,2),%edx
502940:	8b 45 bc             	mov    -0x44(%ebp),%eax
502943:	8b 4d d0             	mov    -0x30(%ebp),%ecx
502946:	03 f2                	add    %edx,%esi
502948:	83 c7 08             	add    $0x8,%edi
50294b:	0f bf 54 41 04       	movswl 0x4(%ecx,%eax,2),%edx
502950:	03 da                	add    %edx,%ebx
502952:	8b 4d a8             	mov    -0x58(%ebp),%ecx
502955:	c1 ff 04             	sar    $0x4,%edi
502958:	83 c3 08             	add    $0x8,%ebx
50295b:	83 c6 08             	add    $0x8,%esi
50295e:	8b 45 a8             	mov    -0x58(%ebp),%eax
502961:	c1 fe 04             	sar    $0x4,%esi
502964:	8b 55 a8             	mov    -0x58(%ebp),%edx
502967:	c1 fb 04             	sar    $0x4,%ebx
50296a:	8b 3c b9             	mov    (%ecx,%edi,4),%edi
50296d:	8b 4d cc             	mov    -0x34(%ebp),%ecx
502970:	8b 34 b0             	mov    (%eax,%esi,4),%esi
502973:	8b 1c 9a             	mov    (%edx,%ebx,4),%ebx
502976:	8b 55 cc             	mov    -0x34(%ebp),%edx
502979:	33 c0                	xor    %eax,%eax
50297b:	8a 01                	mov    (%ecx),%al
50297d:	33 c9                	xor    %ecx,%ecx
50297f:	03 f8                	add    %eax,%edi
502981:	8b 45 cc             	mov    -0x34(%ebp),%eax
502984:	8a 4a 01             	mov    0x1(%edx),%cl
502987:	33 d2                	xor    %edx,%edx
502989:	03 f1                	add    %ecx,%esi
50298b:	8b 4d ac             	mov    -0x54(%ebp),%ecx
50298e:	8a 50 02             	mov    0x2(%eax),%dl
502991:	33 c0                	xor    %eax,%eax
502993:	03 da                	add    %edx,%ebx
502995:	8b 55 ac             	mov    -0x54(%ebp),%edx
502998:	8a 04 39             	mov    (%ecx,%edi,1),%al
50299b:	33 c9                	xor    %ecx,%ecx
50299d:	8b f8                	mov    %eax,%edi
50299f:	8b 45 ac             	mov    -0x54(%ebp),%eax
5029a2:	8a 0c 32             	mov    (%edx,%esi,1),%cl
5029a5:	33 d2                	xor    %edx,%edx
5029a7:	8a 14 18             	mov    (%eax,%ebx,1),%dl
5029aa:	8b c7                	mov    %edi,%eax
5029ac:	c1 f8 03             	sar    $0x3,%eax
5029af:	8b da                	mov    %edx,%ebx
5029b1:	8b 55 ec             	mov    -0x14(%ebp),%edx
5029b4:	8b f1                	mov    %ecx,%esi
5029b6:	8b 0c 82             	mov    (%edx,%eax,4),%ecx
5029b9:	8b d6                	mov    %esi,%edx
5029bb:	c1 fa 02             	sar    $0x2,%edx
5029be:	c1 e2 06             	shl    $0x6,%edx
5029c1:	03 ca                	add    %edx,%ecx
5029c3:	8b d3                	mov    %ebx,%edx
5029c5:	c1 fa 03             	sar    $0x3,%edx
5029c8:	03 d2                	add    %edx,%edx
5029ca:	03 ca                	add    %edx,%ecx
5029cc:	89 4d c4             	mov    %ecx,-0x3c(%ebp)
5029cf:	8b 4d c4             	mov    -0x3c(%ebp),%ecx
5029d2:	66 83 39 00          	cmpw   $0x0,(%ecx)
5029d6:	75 15                	jne    0x5029ed
5029d8:	8b d3                	mov    %ebx,%edx
5029da:	c1 fa 03             	sar    $0x3,%edx
5029dd:	52                   	push   %edx
5029de:	8b ce                	mov    %esi,%ecx
5029e0:	c1 f9 02             	sar    $0x2,%ecx
5029e3:	8b d0                	mov    %eax,%edx
5029e5:	8b 45 fc             	mov    -0x4(%ebp),%eax
5029e8:	e8 57 fc ff ff       	call   0x502644
5029ed:	8b 4d c4             	mov    -0x3c(%ebp),%ecx
5029f0:	8b 55 c8             	mov    -0x38(%ebp),%edx
5029f3:	0f b7 01             	movzwl (%ecx),%eax
5029f6:	48                   	dec    %eax
5029f7:	88 02                	mov    %al,(%edx)
5029f9:	33 d2                	xor    %edx,%edx
5029fb:	8b 4d a4             	mov    -0x5c(%ebp),%ecx
5029fe:	8a 14 01             	mov    (%ecx,%eax,1),%dl
502a01:	8b 4d a0             	mov    -0x60(%ebp),%ecx
502a04:	2b fa                	sub    %edx,%edi
502a06:	33 d2                	xor    %edx,%edx
502a08:	8a 14 01             	mov    (%ecx,%eax,1),%dl
502a0b:	8b 4d 9c             	mov    -0x64(%ebp),%ecx
502a0e:	2b f2                	sub    %edx,%esi
502a10:	0f b6 04 01          	movzbl (%ecx,%eax,1),%eax
502a14:	2b d8                	sub    %eax,%ebx
502a16:	89 7d 98             	mov    %edi,-0x68(%ebp)
502a19:	8b c7                	mov    %edi,%eax
502a1b:	66 8b 55 dc          	mov    -0x24(%ebp),%dx
502a1f:	03 c0                	add    %eax,%eax
502a21:	03 f8                	add    %eax,%edi
502a23:	8b 4d d0             	mov    -0x30(%ebp),%ecx
502a26:	66 03 d7             	add    %di,%dx
502a29:	03 f8                	add    %eax,%edi
502a2b:	66 89 11             	mov    %dx,(%ecx)
502a2e:	8b 55 e8             	mov    -0x18(%ebp),%edx
502a31:	03 d7                	add    %edi,%edx
502a33:	03 f8                	add    %eax,%edi
502a35:	89 55 dc             	mov    %edx,-0x24(%ebp)
502a38:	8b c6                	mov    %esi,%eax
502a3a:	8b 4d 98             	mov    -0x68(%ebp),%ecx
502a3d:	03 c0                	add    %eax,%eax
502a3f:	89 4d e8             	mov    %ecx,-0x18(%ebp)
502a42:	89 75 98             	mov    %esi,-0x68(%ebp)
502a45:	66 8b 55 d8          	mov    -0x28(%ebp),%dx
502a49:	03 f0                	add    %eax,%esi
502a4b:	66 03 d6             	add    %si,%dx
502a4e:	8b 4d d0             	mov    -0x30(%ebp),%ecx
502a51:	03 f0                	add    %eax,%esi
502a53:	66 89 51 02          	mov    %dx,0x2(%ecx)
502a57:	8b 55 e4             	mov    -0x1c(%ebp),%edx
502a5a:	03 d6                	add    %esi,%edx
502a5c:	03 f0                	add    %eax,%esi
502a5e:	89 55 d8             	mov    %edx,-0x28(%ebp)
502a61:	8b c3                	mov    %ebx,%eax
502a63:	8b 4d 98             	mov    -0x68(%ebp),%ecx
502a66:	03 c0                	add    %eax,%eax
502a68:	89 4d e4             	mov    %ecx,-0x1c(%ebp)
502a6b:	89 5d 98             	mov    %ebx,-0x68(%ebp)
502a6e:	66 8b 55 d4          	mov    -0x2c(%ebp),%dx
502a72:	03 d8                	add    %eax,%ebx
502a74:	66 03 d3             	add    %bx,%dx
502a77:	8b 4d d0             	mov    -0x30(%ebp),%ecx
502a7a:	03 d8                	add    %eax,%ebx
502a7c:	66 89 51 04          	mov    %dx,0x4(%ecx)
502a80:	8b 55 e0             	mov    -0x20(%ebp),%edx
502a83:	03 d3                	add    %ebx,%edx
502a85:	03 d8                	add    %eax,%ebx
502a87:	89 55 d4             	mov    %edx,-0x2c(%ebp)
502a8a:	8b 4d 98             	mov    -0x68(%ebp),%ecx
502a8d:	89 4d e0             	mov    %ecx,-0x20(%ebp)
502a90:	8b 45 bc             	mov    -0x44(%ebp),%eax
502a93:	01 45 cc             	add    %eax,-0x34(%ebp)
502a96:	8b 45 c0             	mov    -0x40(%ebp),%eax
502a99:	01 45 c8             	add    %eax,-0x38(%ebp)
502a9c:	8b 55 bc             	mov    -0x44(%ebp),%edx
502a9f:	03 d2                	add    %edx,%edx
502aa1:	01 55 d0             	add    %edx,-0x30(%ebp)
502aa4:	ff 4d b4             	decl   -0x4c(%ebp)
502aa7:	83 7d b4 00          	cmpl   $0x0,-0x4c(%ebp)
502aab:	0f 87 78 fe ff ff    	ja     0x502929
502ab1:	8b 4d d0             	mov    -0x30(%ebp),%ecx
502ab4:	66 8b 45 dc          	mov    -0x24(%ebp),%ax
502ab8:	66 89 01             	mov    %ax,(%ecx)
502abb:	8b 55 d0             	mov    -0x30(%ebp),%edx
502abe:	66 8b 4d d8          	mov    -0x28(%ebp),%cx
502ac2:	66 89 4a 02          	mov    %cx,0x2(%edx)
502ac6:	8b 45 d0             	mov    -0x30(%ebp),%eax
502ac9:	66 8b 55 d4          	mov    -0x2c(%ebp),%dx
502acd:	66 89 50 04          	mov    %dx,0x4(%eax)
502ad1:	ff 45 b8             	incl   -0x48(%ebp)
502ad4:	83 45 90 04          	addl   $0x4,-0x70(%ebp)
502ad8:	83 45 94 04          	addl   $0x4,-0x6c(%ebp)
502adc:	8b 4d b8             	mov    -0x48(%ebp),%ecx
502adf:	3b 4d 08             	cmp    0x8(%ebp),%ecx
502ae2:	0f 8c 9a fd ff ff    	jl     0x502882
502ae8:	5f                   	pop    %edi
502ae9:	5e                   	pop    %esi
502aea:	5b                   	pop    %ebx
502aeb:	8b e5                	mov    %ebp,%esp
502aed:	5d                   	pop    %ebp
502aee:	c2 04 00             	ret    $0x4
502af1:	90                   	nop
502af2:	90                   	nop
502af3:	90                   	nop
502af4:	53                   	push   %ebx
502af5:	56                   	push   %esi
502af6:	57                   	push   %edi
502af7:	b9 fc 07 00 00       	mov    $0x7fc,%ecx
502afc:	8b 70 04             	mov    0x4(%eax),%esi
502aff:	8b 98 c4 01 00 00    	mov    0x1c4(%eax),%ebx
502b05:	ba 01 00 00 00       	mov    $0x1,%edx
502b0a:	ff 16                	call   *(%esi)
502b0c:	8b c8                	mov    %eax,%ecx
502b0e:	33 d2                	xor    %edx,%edx
502b10:	81 c1 fc 03 00 00    	add    $0x3fc,%ecx
502b16:	33 c0                	xor    %eax,%eax
502b18:	89 4b 28             	mov    %ecx,0x28(%ebx)
502b1b:	8b d9                	mov    %ecx,%ebx
502b1d:	89 13                	mov    %edx,(%ebx)
502b1f:	8b f0                	mov    %eax,%esi
502b21:	f7 de                	neg    %esi
502b23:	8b fa                	mov    %edx,%edi
502b25:	f7 df                	neg    %edi
502b27:	89 3c b1             	mov    %edi,(%ecx,%esi,4)
502b2a:	83 c3 04             	add    $0x4,%ebx
502b2d:	40                   	inc    %eax
502b2e:	42                   	inc    %edx
502b2f:	83 f8 10             	cmp    $0x10,%eax
502b32:	7c e9                	jl     0x502b1d
502b34:	8d 1c 81             	lea    (%ecx,%eax,4),%ebx
502b37:	83 f8 30             	cmp    $0x30,%eax
502b3a:	7d 25                	jge    0x502b61
502b3c:	8b f0                	mov    %eax,%esi
502b3e:	8b fa                	mov    %edx,%edi
502b40:	f7 de                	neg    %esi
502b42:	f7 df                	neg    %edi
502b44:	89 13                	mov    %edx,(%ebx)
502b46:	83 c3 04             	add    $0x4,%ebx
502b49:	40                   	inc    %eax
502b4a:	89 3c b1             	mov    %edi,(%ecx,%esi,4)
502b4d:	a8 01                	test   $0x1,%al
502b4f:	74 04                	je     0x502b55
502b51:	33 f6                	xor    %esi,%esi
502b53:	eb 05                	jmp    0x502b5a
502b55:	be 01 00 00 00       	mov    $0x1,%esi
502b5a:	03 d6                	add    %esi,%edx
502b5c:	83 f8 30             	cmp    $0x30,%eax
502b5f:	7c db                	jl     0x502b3c
502b61:	8d 1c 81             	lea    (%ecx,%eax,4),%ebx
502b64:	3d ff 00 00 00       	cmp    $0xff,%eax
502b69:	7f 18                	jg     0x502b83
502b6b:	8b f0                	mov    %eax,%esi
502b6d:	8b fa                	mov    %edx,%edi
502b6f:	f7 de                	neg    %esi
502b71:	f7 df                	neg    %edi
502b73:	89 13                	mov    %edx,(%ebx)
502b75:	83 c3 04             	add    $0x4,%ebx
502b78:	40                   	inc    %eax
502b79:	89 3c b1             	mov    %edi,(%ecx,%esi,4)
502b7c:	3d ff 00 00 00       	cmp    $0xff,%eax
502b81:	7e e8                	jle    0x502b6b
502b83:	5f                   	pop    %edi
502b84:	5e                   	pop    %esi
502b85:	5b                   	pop    %ebx
502b86:	c3                   	ret
502b87:	90                   	nop
502b88:	53                   	push   %ebx
502b89:	8b 98 c4 01 00 00    	mov    0x1c4(%eax),%ebx
502b8f:	8b 53 10             	mov    0x10(%ebx),%edx
502b92:	89 90 84 00 00 00    	mov    %edx,0x84(%eax)
502b98:	8b 53 14             	mov    0x14(%ebx),%edx
502b9b:	e8 54 f6 ff ff       	call   0x5021f4
502ba0:	c7 43 1c 01 00 00 00 	movl   $0x1,0x1c(%ebx)
502ba7:	5b                   	pop    %ebx
502ba8:	c3                   	ret
502ba9:	90                   	nop
502baa:	90                   	nop
502bab:	90                   	nop
502bac:	c3                   	ret
502bad:	90                   	nop
502bae:	90                   	nop
502baf:	90                   	nop
502bb0:	53                   	push   %ebx
502bb1:	56                   	push   %esi
502bb2:	8b f0                	mov    %eax,%esi
502bb4:	57                   	push   %edi
502bb5:	55                   	push   %ebp
502bb6:	51                   	push   %ecx
502bb7:	8b 9e c4 01 00 00    	mov    0x1c4(%esi),%ebx
502bbd:	8b 43 18             	mov    0x18(%ebx),%eax
502bc0:	89 04 24             	mov    %eax,(%esp)
502bc3:	83 7e 54 00          	cmpl   $0x0,0x54(%esi)
502bc7:	74 07                	je     0x502bd0
502bc9:	c7 46 54 02 00 00 00 	movl   $0x2,0x54(%esi)
502bd0:	85 d2                	test   %edx,%edx
502bd2:	74 1a                	je     0x502bee
502bd4:	c7 43 04 ec 1a 50 00 	movl   $0x501aec,0x4(%ebx)
502bdb:	c7 43 08 88 2b 50 00 	movl   $0x502b88,0x8(%ebx)
502be2:	c7 43 1c 01 00 00 00 	movl   $0x1,0x1c(%ebx)
502be9:	e9 a6 00 00 00       	jmp    0x502c94
502bee:	83 7e 54 02          	cmpl   $0x2,0x54(%esi)
502bf2:	75 09                	jne    0x502bfd
502bf4:	c7 43 04 f0 27 50 00 	movl   $0x5027f0,0x4(%ebx)
502bfb:	eb 07                	jmp    0x502c04
502bfd:	c7 43 04 24 27 50 00 	movl   $0x502724,0x4(%ebx)
502c04:	c7 43 08 ac 2b 50 00 	movl   $0x502bac,0x8(%ebx)
502c0b:	8b be 80 00 00 00    	mov    0x80(%esi),%edi
502c11:	83 ff 01             	cmp    $0x1,%edi
502c14:	7d 16                	jge    0x502c2c
502c16:	8b 06                	mov    (%esi),%eax
502c18:	c7 40 14 37 00 00 00 	movl   $0x37,0x14(%eax)
502c1f:	c7 40 18 01 00 00 00 	movl   $0x1,0x18(%eax)
502c26:	8b c6                	mov    %esi,%eax
502c28:	8b 10                	mov    (%eax),%edx
502c2a:	ff 12                	call   *(%edx)
502c2c:	81 ff 00 01 00 00    	cmp    $0x100,%edi
502c32:	7e 16                	jle    0x502c4a
502c34:	8b 06                	mov    (%esi),%eax
502c36:	c7 40 14 38 00 00 00 	movl   $0x38,0x14(%eax)
502c3d:	c7 40 18 00 01 00 00 	movl   $0x100,0x18(%eax)
502c44:	8b c6                	mov    %esi,%eax
502c46:	8b 10                	mov    (%eax),%edx
502c48:	ff 12                	call   *(%edx)
502c4a:	83 7e 54 02          	cmpl   $0x2,0x54(%esi)
502c4e:	75 44                	jne    0x502c94
502c50:	8b 7e 6c             	mov    0x6c(%esi),%edi
502c53:	03 ff                	add    %edi,%edi
502c55:	8d 3c 7f             	lea    (%edi,%edi,2),%edi
502c58:	83 c7 0c             	add    $0xc,%edi
502c5b:	83 7b 20 00          	cmpl   $0x0,0x20(%ebx)
502c5f:	75 12                	jne    0x502c73
502c61:	8b c6                	mov    %esi,%eax
502c63:	8b cf                	mov    %edi,%ecx
502c65:	ba 01 00 00 00       	mov    $0x1,%edx
502c6a:	8b 68 04             	mov    0x4(%eax),%ebp
502c6d:	ff 55 04             	call   *0x4(%ebp)
502c70:	89 43 20             	mov    %eax,0x20(%ebx)
502c73:	57                   	push   %edi
502c74:	6a 00                	push   $0x0
502c76:	8b 43 20             	mov    0x20(%ebx),%eax
502c79:	50                   	push   %eax
502c7a:	e8 35 86 ff ff       	call   0x4fb2b4
502c7f:	83 c4 0c             	add    $0xc,%esp
502c82:	83 7b 28 00          	cmpl   $0x0,0x28(%ebx)
502c86:	75 07                	jne    0x502c8f
502c88:	8b c6                	mov    %esi,%eax
502c8a:	e8 65 fe ff ff       	call   0x502af4
502c8f:	33 d2                	xor    %edx,%edx
502c91:	89 53 24             	mov    %edx,0x24(%ebx)
502c94:	83 7b 1c 00          	cmpl   $0x0,0x1c(%ebx)
502c98:	74 27                	je     0x502cc1
502c9a:	33 ff                	xor    %edi,%edi
502c9c:	8b 04 24             	mov    (%esp),%eax
502c9f:	8b f0                	mov    %eax,%esi
502ca1:	68 00 10 00 00       	push   $0x1000
502ca6:	6a 00                	push   $0x0
502ca8:	8b 06                	mov    (%esi),%eax
502caa:	50                   	push   %eax
502cab:	e8 04 86 ff ff       	call   0x4fb2b4
502cb0:	83 c4 0c             	add    $0xc,%esp
502cb3:	47                   	inc    %edi
502cb4:	83 c6 04             	add    $0x4,%esi
502cb7:	83 ff 20             	cmp    $0x20,%edi
502cba:	7c e5                	jl     0x502ca1
502cbc:	33 d2                	xor    %edx,%edx
502cbe:	89 53 1c             	mov    %edx,0x1c(%ebx)
502cc1:	5a                   	pop    %edx
502cc2:	5d                   	pop    %ebp
502cc3:	5f                   	pop    %edi
502cc4:	5e                   	pop    %esi
502cc5:	5b                   	pop    %ebx
502cc6:	c3                   	ret
502cc7:	90                   	nop
502cc8:	8b 80 c4 01 00 00    	mov    0x1c4(%eax),%eax
502cce:	c7 40 1c 01 00 00 00 	movl   $0x1,0x1c(%eax)
502cd5:	c3                   	ret
502cd6:	90                   	nop
502cd7:	90                   	nop
502cd8:	53                   	push   %ebx
502cd9:	8b d8                	mov    %eax,%ebx
502cdb:	8b c3                	mov    %ebx,%eax
502cdd:	56                   	push   %esi
502cde:	57                   	push   %edi
502cdf:	55                   	push   %ebp
502ce0:	8b 70 04             	mov    0x4(%eax),%esi