50a8bc:	89 4e 0c             	mov    %ecx,0xc(%esi)
50a8bf:	ff 44 24 20          	incl   0x20(%esp)
50a8c3:	8b 46 14             	mov    0x14(%esi),%eax
50a8c6:	3b 44 24 20          	cmp    0x20(%esp),%eax
50a8ca:	0f 8f 26 fe ff ff    	jg     0x50a6f6
50a8d0:	ff 46 08             	incl   0x8(%esi)
50a8d3:	8b 04 24             	mov    (%esp),%eax
50a8d6:	e8 fd fc ff ff       	call   0x50a5d8
50a8db:	b8 01 00 00 00       	mov    $0x1,%eax
50a8e0:	83 c4 3c             	add    $0x3c,%esp
50a8e3:	5f                   	pop    %edi
50a8e4:	5e                   	pop    %esi
50a8e5:	5b                   	pop    %ebx
50a8e6:	c3                   	ret
50a8e7:	90                   	nop
50a8e8:	53                   	push   %ebx
50a8e9:	56                   	push   %esi
50a8ea:	57                   	push   %edi
50a8eb:	83 c4 b8             	add    $0xffffffb8,%esp
50a8ee:	89 54 24 04          	mov    %edx,0x4(%esp)
50a8f2:	89 04 24             	mov    %eax,(%esp)
50a8f5:	8b 04 24             	mov    (%esp),%eax
50a8f8:	8b 90 50 01 00 00    	mov    0x150(%eax),%edx
50a8fe:	89 54 24 08          	mov    %edx,0x8(%esp)
50a902:	8b 0c 24             	mov    (%esp),%ecx
50a905:	8b 81 e8 00 00 00    	mov    0xe8(%ecx),%eax
50a90b:	48                   	dec    %eax
50a90c:	33 d2                	xor    %edx,%edx
50a90e:	89 44 24 0c          	mov    %eax,0xc(%esp)
50a912:	89 54 24 1c          	mov    %edx,0x1c(%esp)
50a916:	8b 0c 24             	mov    (%esp),%ecx
50a919:	8b 41 3c             	mov    0x3c(%ecx),%eax
50a91c:	89 44 24 28          	mov    %eax,0x28(%esp)
50a920:	8b 54 24 04          	mov    0x4(%esp),%edx
50a924:	8b ca                	mov    %edx,%ecx
50a926:	89 4c 24 40          	mov    %ecx,0x40(%esp)
50a92a:	8b 44 24 08          	mov    0x8(%esp),%eax
50a92e:	8d 50 40             	lea    0x40(%eax),%edx
50a931:	89 54 24 34          	mov    %edx,0x34(%esp)
50a935:	e9 1b 02 00 00       	jmp    0x50ab55
50a93a:	8b 4c 24 28          	mov    0x28(%esp),%ecx
50a93e:	8b 41 0c             	mov    0xc(%ecx),%eax
50a941:	50                   	push   %eax
50a942:	6a 01                	push   $0x1
50a944:	8b 54 24 10          	mov    0x10(%esp),%edx
50a948:	8b 4a 08             	mov    0x8(%edx),%ecx
50a94b:	0f af c8             	imul   %eax,%ecx
50a94e:	8b 44 24 3c          	mov    0x3c(%esp),%eax
50a952:	8b 10                	mov    (%eax),%edx
50a954:	8b 44 24 08          	mov    0x8(%esp),%eax
50a958:	8b 58 04             	mov    0x4(%eax),%ebx
50a95b:	ff 53 20             	call   *0x20(%ebx)
50a95e:	89 44 24 2c          	mov    %eax,0x2c(%esp)
50a962:	8b 44 24 08          	mov    0x8(%esp),%eax
50a966:	8b 50 08             	mov    0x8(%eax),%edx
50a969:	3b 54 24 0c          	cmp    0xc(%esp),%edx
50a96d:	73 0d                	jae    0x50a97c
50a96f:	8b 4c 24 28          	mov    0x28(%esp),%ecx
50a973:	8b 41 0c             	mov    0xc(%ecx),%eax
50a976:	89 44 24 24          	mov    %eax,0x24(%esp)
50a97a:	eb 21                	jmp    0x50a99d
50a97c:	8b 54 24 28          	mov    0x28(%esp),%edx
50a980:	8b 42 20             	mov    0x20(%edx),%eax
50a983:	8b 54 24 28          	mov    0x28(%esp),%edx
50a987:	8b 4a 0c             	mov    0xc(%edx),%ecx
50a98a:	33 d2                	xor    %edx,%edx
50a98c:	f7 f1                	div    %ecx
50a98e:	89 54 24 24          	mov    %edx,0x24(%esp)
50a992:	83 7c 24 24 00       	cmpl   $0x0,0x24(%esp)
50a997:	75 04                	jne    0x50a99d
50a999:	89 4c 24 24          	mov    %ecx,0x24(%esp)
50a99d:	8b 44 24 28          	mov    0x28(%esp),%eax
50a9a1:	33 d2                	xor    %edx,%edx
50a9a3:	8b 48 1c             	mov    0x1c(%eax),%ecx
50a9a6:	89 4c 24 10          	mov    %ecx,0x10(%esp)
50a9aa:	8b 44 24 28          	mov    0x28(%esp),%eax
50a9ae:	8b 58 08             	mov    0x8(%eax),%ebx
50a9b1:	8b 44 24 10          	mov    0x10(%esp),%eax
50a9b5:	f7 f3                	div    %ebx
50a9b7:	8b f2                	mov    %edx,%esi
50a9b9:	85 f6                	test   %esi,%esi
50a9bb:	7e 06                	jle    0x50a9c3
50a9bd:	8b c3                	mov    %ebx,%eax
50a9bf:	2b c6                	sub    %esi,%eax
50a9c1:	8b f0                	mov    %eax,%esi
50a9c3:	33 d2                	xor    %edx,%edx
50a9c5:	89 54 24 20          	mov    %edx,0x20(%esp)
50a9c9:	8b 4c 24 40          	mov    0x40(%esp),%ecx
50a9cd:	8b c1                	mov    %ecx,%eax
50a9cf:	89 44 24 3c          	mov    %eax,0x3c(%esp)
50a9d3:	8b 54 24 2c          	mov    0x2c(%esp),%edx
50a9d7:	8b ca                	mov    %edx,%ecx
50a9d9:	89 4c 24 38          	mov    %ecx,0x38(%esp)
50a9dd:	8b 44 24 20          	mov    0x20(%esp),%eax
50a9e1:	3b 44 24 24          	cmp    0x24(%esp),%eax
50a9e5:	0f 8d 90 00 00 00    	jge    0x50aa7b
50a9eb:	8b 54 24 38          	mov    0x38(%esp),%edx
50a9ef:	8b 0a                	mov    (%edx),%ecx
50a9f1:	89 4c 24 30          	mov    %ecx,0x30(%esp)
50a9f5:	8b 44 24 30          	mov    0x30(%esp),%eax
50a9f9:	50                   	push   %eax
50a9fa:	8b 54 24 24          	mov    0x24(%esp),%edx
50a9fe:	c1 e2 03             	shl    $0x3,%edx
50aa01:	52                   	push   %edx
50aa02:	6a 00                	push   $0x0
50aa04:	8b 4c 24 1c          	mov    0x1c(%esp),%ecx
50aa08:	51                   	push   %ecx
50aa09:	8b 44 24 4c          	mov    0x4c(%esp),%eax
50aa0d:	8b 54 24 38          	mov    0x38(%esp),%edx
50aa11:	8b 08                	mov    (%eax),%ecx
50aa13:	8b 44 24 10          	mov    0x10(%esp),%eax
50aa17:	8b b8 60 01 00 00    	mov    0x160(%eax),%edi
50aa1d:	ff 57 04             	call   *0x4(%edi)
50aa20:	85 f6                	test   %esi,%esi
50aa22:	7e 40                	jle    0x50aa64
50aa24:	8b 44 24 10          	mov    0x10(%esp),%eax
50aa28:	c1 e0 07             	shl    $0x7,%eax
50aa2b:	01 44 24 30          	add    %eax,0x30(%esp)
50aa2f:	8b d6                	mov    %esi,%edx
50aa31:	c1 e2 07             	shl    $0x7,%edx
50aa34:	52                   	push   %edx
50aa35:	6a 00                	push   $0x0
50aa37:	8b 4c 24 38          	mov    0x38(%esp),%ecx
50aa3b:	51                   	push   %ecx
50aa3c:	e8 73 08 ff ff       	call   0x4fb2b4
50aa41:	83 c4 0c             	add    $0xc,%esp
50aa44:	8b 44 24 30          	mov    0x30(%esp),%eax
50aa48:	8b 54 24 30          	mov    0x30(%esp),%edx
50aa4c:	66 8b 48 80          	mov    -0x80(%eax),%cx
50aa50:	33 c0                	xor    %eax,%eax
50aa52:	3b f0                	cmp    %eax,%esi
50aa54:	7e 0e                	jle    0x50aa64
50aa56:	66 89 0a             	mov    %cx,(%edx)
50aa59:	40                   	inc    %eax
50aa5a:	81 c2 80 00 00 00    	add    $0x80,%edx
50aa60:	3b f0                	cmp    %eax,%esi
50aa62:	7f f2                	jg     0x50aa56
50aa64:	ff 44 24 20          	incl   0x20(%esp)
50aa68:	83 44 24 38 04       	addl   $0x4,0x38(%esp)
50aa6d:	8b 44 24 20          	mov    0x20(%esp),%eax
50aa71:	3b 44 24 24          	cmp    0x24(%esp),%eax
50aa75:	0f 8c 70 ff ff ff    	jl     0x50a9eb
50aa7b:	8b 4c 24 08          	mov    0x8(%esp),%ecx
50aa7f:	8b 41 08             	mov    0x8(%ecx),%eax
50aa82:	3b 44 24 0c          	cmp    0xc(%esp),%eax
50aa86:	0f 85 b6 00 00 00    	jne    0x50ab42
50aa8c:	01 74 24 10          	add    %esi,0x10(%esp)
50aa90:	8b 44 24 10          	mov    0x10(%esp),%eax
50aa94:	33 d2                	xor    %edx,%edx
50aa96:	f7 f3                	div    %ebx
50aa98:	89 44 24 14          	mov    %eax,0x14(%esp)
50aa9c:	8b 4c 24 24          	mov    0x24(%esp),%ecx
50aaa0:	89 4c 24 20          	mov    %ecx,0x20(%esp)
50aaa4:	8b 44 24 2c          	mov    0x2c(%esp),%eax
50aaa8:	8b 54 24 20          	mov    0x20(%esp),%edx
50aaac:	8d 0c 90             	lea    (%eax,%edx,4),%ecx
50aaaf:	89 4c 24 44          	mov    %ecx,0x44(%esp)
50aab3:	eb 7c                	jmp    0x50ab31
50aab5:	8b 44 24 44          	mov    0x44(%esp),%eax
50aab9:	8b 10                	mov    (%eax),%edx
50aabb:	89 54 24 30          	mov    %edx,0x30(%esp)
50aabf:	8b 4c 24 44          	mov    0x44(%esp),%ecx
50aac3:	8b 44 24 10          	mov    0x10(%esp),%eax
50aac7:	c1 e0 07             	shl    $0x7,%eax
50aaca:	8b 71 fc             	mov    -0x4(%ecx),%esi
50aacd:	50                   	push   %eax
50aace:	6a 00                	push   $0x0
50aad0:	8b 54 24 38          	mov    0x38(%esp),%edx
50aad4:	52                   	push   %edx
50aad5:	e8 da 07 ff ff       	call   0x4fb2b4
50aada:	83 c4 0c             	add    $0xc,%esp
50aadd:	33 c9                	xor    %ecx,%ecx
50aadf:	89 4c 24 18          	mov    %ecx,0x18(%esp)
50aae3:	8b 44 24 18          	mov    0x18(%esp),%eax
50aae7:	3b 44 24 14          	cmp    0x14(%esp),%eax
50aaeb:	73 3b                	jae    0x50ab28
50aaed:	8b d3                	mov    %ebx,%edx
50aaef:	33 c0                	xor    %eax,%eax
50aaf1:	c1 e2 07             	shl    $0x7,%edx
50aaf4:	3b d8                	cmp    %eax,%ebx
50aaf6:	66 8b 4c 16 80       	mov    -0x80(%esi,%edx,1),%cx
50aafb:	8b 54 24 30          	mov    0x30(%esp),%edx
50aaff:	7e 0e                	jle    0x50ab0f
50ab01:	66 89 0a             	mov    %cx,(%edx)
50ab04:	40                   	inc    %eax
50ab05:	81 c2 80 00 00 00    	add    $0x80,%edx
50ab0b:	3b d8                	cmp    %eax,%ebx
50ab0d:	7f f2                	jg     0x50ab01
50ab0f:	8b c3                	mov    %ebx,%eax
50ab11:	c1 e0 07             	shl    $0x7,%eax
50ab14:	01 44 24 30          	add    %eax,0x30(%esp)
50ab18:	03 f0                	add    %eax,%esi
50ab1a:	ff 44 24 18          	incl   0x18(%esp)
50ab1e:	8b 4c 24 18          	mov    0x18(%esp),%ecx
50ab22:	3b 4c 24 14          	cmp    0x14(%esp),%ecx
50ab26:	72 c5                	jb     0x50aaed
50ab28:	ff 44 24 20          	incl   0x20(%esp)
50ab2c:	83 44 24 44 04       	addl   $0x4,0x44(%esp)
50ab31:	8b 44 24 28          	mov    0x28(%esp),%eax
50ab35:	8b 50 0c             	mov    0xc(%eax),%edx
50ab38:	3b 54 24 20          	cmp    0x20(%esp),%edx
50ab3c:	0f 8f 73 ff ff ff    	jg     0x50aab5
50ab42:	83 44 24 34 04       	addl   $0x4,0x34(%esp)
50ab47:	83 44 24 40 04       	addl   $0x4,0x40(%esp)
50ab4c:	ff 44 24 1c          	incl   0x1c(%esp)
50ab50:	83 44 24 28 54       	addl   $0x54,0x28(%esp)
50ab55:	8b 0c 24             	mov    (%esp),%ecx
50ab58:	8b 41 34             	mov    0x34(%ecx),%eax
50ab5b:	3b 44 24 1c          	cmp    0x1c(%esp),%eax
50ab5f:	0f 8f d5 fd ff ff    	jg     0x50a93a
50ab65:	8b 54 24 04          	mov    0x4(%esp),%edx
50ab69:	8b 04 24             	mov    (%esp),%eax
50ab6c:	e8 07 00 00 00       	call   0x50ab78
50ab71:	83 c4 48             	add    $0x48,%esp
50ab74:	5f                   	pop    %edi
50ab75:	5e                   	pop    %esi
50ab76:	5b                   	pop    %ebx
50ab77:	c3                   	ret
50ab78:	53                   	push   %ebx
50ab79:	56                   	push   %esi
50ab7a:	57                   	push   %edi
50ab7b:	83 c4 c8             	add    $0xffffffc8,%esp
50ab7e:	33 c9                	xor    %ecx,%ecx
50ab80:	89 04 24             	mov    %eax,(%esp)
50ab83:	8b 04 24             	mov    (%esp),%eax
50ab86:	8d 74 24 28          	lea    0x28(%esp),%esi
50ab8a:	8b 90 50 01 00 00    	mov    0x150(%eax),%edx
50ab90:	89 54 24 04          	mov    %edx,0x4(%esp)
50ab94:	89 4c 24 0c          	mov    %ecx,0xc(%esp)
50ab98:	8b 04 24             	mov    (%esp),%eax
50ab9b:	8d 98 f0 00 00 00    	lea    0xf0(%eax),%ebx
50aba1:	eb 3f                	jmp    0x50abe2
50aba3:	8b 03                	mov    (%ebx),%eax
50aba5:	89 44 24 18          	mov    %eax,0x18(%esp)
50aba9:	8b 54 24 18          	mov    0x18(%esp),%edx
50abad:	8b 7a 0c             	mov    0xc(%edx),%edi
50abb0:	57                   	push   %edi
50abb1:	6a 00                	push   $0x0
50abb3:	8b 44 24 0c          	mov    0xc(%esp),%eax
50abb7:	8b 54 24 20          	mov    0x20(%esp),%edx
50abbb:	8b 48 08             	mov    0x8(%eax),%ecx
50abbe:	8b 42 04             	mov    0x4(%edx),%eax
50abc1:	0f af cf             	imul   %edi,%ecx
50abc4:	8b 54 24 0c          	mov    0xc(%esp),%edx
50abc8:	8b 54 82 40          	mov    0x40(%edx,%eax,4),%edx
50abcc:	8b 44 24 08          	mov    0x8(%esp),%eax
50abd0:	8b 78 04             	mov    0x4(%eax),%edi
50abd3:	ff 57 20             	call   *0x20(%edi)
50abd6:	89 06                	mov    %eax,(%esi)
50abd8:	83 c6 04             	add    $0x4,%esi
50abdb:	ff 44 24 0c          	incl   0xc(%esp)
50abdf:	83 c3 04             	add    $0x4,%ebx
50abe2:	8b 04 24             	mov    (%esp),%eax
50abe5:	8b 90 ec 00 00 00    	mov    0xec(%eax),%edx
50abeb:	3b 54 24 0c          	cmp    0xc(%esp),%edx
50abef:	7f b2                	jg     0x50aba3
50abf1:	8b 4c 24 04          	mov    0x4(%esp),%ecx
50abf5:	8b 41 10             	mov    0x10(%ecx),%eax
50abf8:	89 44 24 10          	mov    %eax,0x10(%esp)
50abfc:	e9 11 01 00 00       	jmp    0x50ad12
50ac01:	8b 54 24 04          	mov    0x4(%esp),%edx
50ac05:	8b 4a 0c             	mov    0xc(%edx),%ecx
50ac08:	89 4c 24 08          	mov    %ecx,0x8(%esp)
50ac0c:	e9 e1 00 00 00       	jmp    0x50acf2
50ac11:	33 db                	xor    %ebx,%ebx
50ac13:	33 c0                	xor    %eax,%eax
50ac15:	89 44 24 0c          	mov    %eax,0xc(%esp)
50ac19:	8d 54 24 28          	lea    0x28(%esp),%edx
50ac1d:	89 54 24 24          	mov    %edx,0x24(%esp)
50ac21:	8b 0c 24             	mov    (%esp),%ecx
50ac24:	8d 81 f0 00 00 00    	lea    0xf0(%ecx),%eax
50ac2a:	89 44 24 1c          	mov    %eax,0x1c(%esp)
50ac2e:	eb 7a                	jmp    0x50acaa
50ac30:	8b 54 24 1c          	mov    0x1c(%esp),%edx
50ac34:	8b 0a                	mov    (%edx),%ecx
50ac36:	89 4c 24 18          	mov    %ecx,0x18(%esp)
50ac3a:	8b 44 24 18          	mov    0x18(%esp),%eax
50ac3e:	8b 50 34             	mov    0x34(%eax),%edx
50ac41:	0f af 54 24 08       	imul   0x8(%esp),%edx
50ac46:	89 54 24 14          	mov    %edx,0x14(%esp)
50ac4a:	33 f6                	xor    %esi,%esi
50ac4c:	8b 44 24 24          	mov    0x24(%esp),%eax
50ac50:	8b d0                	mov    %eax,%edx
50ac52:	89 54 24 20          	mov    %edx,0x20(%esp)
50ac56:	eb 3b                	jmp    0x50ac93
50ac58:	8b 44 24 20          	mov    0x20(%esp),%eax
50ac5c:	8b 4c 24 10          	mov    0x10(%esp),%ecx
50ac60:	03 ce                	add    %esi,%ecx
50ac62:	8b 10                	mov    (%eax),%edx
50ac64:	8b 44 24 14          	mov    0x14(%esp),%eax
50ac68:	c1 e0 07             	shl    $0x7,%eax
50ac6b:	8b 14 8a             	mov    (%edx,%ecx,4),%edx
50ac6e:	03 d0                	add    %eax,%edx
50ac70:	8b 44 24 04          	mov    0x4(%esp),%eax
50ac74:	33 c9                	xor    %ecx,%ecx
50ac76:	8d 44 98 18          	lea    0x18(%eax,%ebx,4),%eax
50ac7a:	eb 0d                	jmp    0x50ac89
50ac7c:	89 10                	mov    %edx,(%eax)
50ac7e:	81 c2 80 00 00 00    	add    $0x80,%edx
50ac84:	43                   	inc    %ebx
50ac85:	83 c0 04             	add    $0x4,%eax
50ac88:	41                   	inc    %ecx
50ac89:	8b 7c 24 18          	mov    0x18(%esp),%edi
50ac8d:	3b 4f 34             	cmp    0x34(%edi),%ecx
50ac90:	7c ea                	jl     0x50ac7c
50ac92:	46                   	inc    %esi
50ac93:	8b 44 24 18          	mov    0x18(%esp),%eax
50ac97:	3b 70 38             	cmp    0x38(%eax),%esi
50ac9a:	7c bc                	jl     0x50ac58
50ac9c:	ff 44 24 0c          	incl   0xc(%esp)
50aca0:	83 44 24 24 04       	addl   $0x4,0x24(%esp)
50aca5:	83 44 24 1c 04       	addl   $0x4,0x1c(%esp)
50acaa:	8b 14 24             	mov    (%esp),%edx
50acad:	8b 8a ec 00 00 00    	mov    0xec(%edx),%ecx
50acb3:	3b 4c 24 0c          	cmp    0xc(%esp),%ecx
50acb7:	0f 8f 73 ff ff ff    	jg     0x50ac30
50acbd:	8b 04 24             	mov    (%esp),%eax
50acc0:	8b 54 24 04          	mov    0x4(%esp),%edx
50acc4:	83 c2 18             	add    $0x18,%edx
50acc7:	8b 88 64 01 00 00    	mov    0x164(%eax),%ecx
50accd:	ff 51 04             	call   *0x4(%ecx)
50acd0:	85 c0                	test   %eax,%eax
50acd2:	75 1a                	jne    0x50acee
50acd4:	8b 44 24 04          	mov    0x4(%esp),%eax
50acd8:	8b 54 24 10          	mov    0x10(%esp),%edx
50acdc:	89 50 10             	mov    %edx,0x10(%eax)
50acdf:	8b 4c 24 04          	mov    0x4(%esp),%ecx
50ace3:	8b 44 24 08          	mov    0x8(%esp),%eax
50ace7:	89 41 0c             	mov    %eax,0xc(%ecx)
50acea:	33 c0                	xor    %eax,%eax
50acec:	eb 49                	jmp    0x50ad37
50acee:	ff 44 24 08          	incl   0x8(%esp)
50acf2:	8b 14 24             	mov    (%esp),%edx
50acf5:	8b 8a 00 01 00 00    	mov    0x100(%edx),%ecx
50acfb:	3b 4c 24 08          	cmp    0x8(%esp),%ecx
50acff:	0f 87 0c ff ff ff    	ja     0x50ac11
50ad05:	8b 44 24 04          	mov    0x4(%esp),%eax
50ad09:	33 d2                	xor    %edx,%edx
50ad0b:	89 50 0c             	mov    %edx,0xc(%eax)
50ad0e:	ff 44 24 10          	incl   0x10(%esp)
50ad12:	8b 4c 24 04          	mov    0x4(%esp),%ecx
50ad16:	8b 41 14             	mov    0x14(%ecx),%eax
50ad19:	3b 44 24 10          	cmp    0x10(%esp),%eax
50ad1d:	0f 8f de fe ff ff    	jg     0x50ac01
50ad23:	8b 54 24 04          	mov    0x4(%esp),%edx
50ad27:	ff 42 08             	incl   0x8(%edx)
50ad2a:	8b 04 24             	mov    (%esp),%eax
50ad2d:	e8 a6 f8 ff ff       	call   0x50a5d8
50ad32:	b8 01 00 00 00       	mov    $0x1,%eax
50ad37:	83 c4 38             	add    $0x38,%esp