46ac50:	8d 44 24 10          	lea    0x10(%esp),%eax
46ac54:	8b cf                	mov    %edi,%ecx
46ac56:	50                   	push   %eax
46ac57:	8d 44 24 24          	lea    0x24(%esp),%eax
46ac5b:	50                   	push   %eax
46ac5c:	8d 44 24 20          	lea    0x20(%esp),%eax
46ac60:	50                   	push   %eax
46ac61:	56                   	push   %esi
46ac62:	ff 15 2c 74 4a 00    	call   *0x4a742c
46ac68:	6a fa                	push   $0xfffffffa
46ac6a:	58                   	pop    %eax
46ac6b:	2b 44 24 48          	sub    0x48(%esp),%eax
46ac6f:	2b 44 24 10          	sub    0x10(%esp),%eax
46ac73:	03 d8                	add    %eax,%ebx
46ac75:	8b 47 5c             	mov    0x5c(%edi),%eax
46ac78:	46                   	inc    %esi
46ac79:	3b f0                	cmp    %eax,%esi
46ac7b:	7c bf                	jl     0x46ac3c
46ac7d:	89 5c 24 10          	mov    %ebx,0x10(%esp)
46ac81:	33 c9                	xor    %ecx,%ecx
46ac83:	6a 04                	push   $0x4
46ac85:	5a                   	pop    %edx
46ac86:	f7 e2                	mul    %edx
46ac88:	0f 90 c1             	seto   %cl
46ac8b:	f7 d9                	neg    %ecx
46ac8d:	0b c8                	or     %eax,%ecx
46ac8f:	51                   	push   %ecx
46ac90:	e8 79 2d 02 00       	call   0x48da0e
46ac95:	8b 74 24 3c          	mov    0x3c(%esp),%esi
46ac99:	8b 5f 5c             	mov    0x5c(%edi),%ebx
46ac9c:	59                   	pop    %ecx
46ac9d:	89 44 24 18          	mov    %eax,0x18(%esp)
46aca1:	eb 75                	jmp    0x46ad18
46aca3:	8d 44 24 20          	lea    0x20(%esp),%eax
46aca7:	8b cf                	mov    %edi,%ecx
46aca9:	50                   	push   %eax
46acaa:	8d 44 24 2c          	lea    0x2c(%esp),%eax
46acae:	50                   	push   %eax
46acaf:	8d 44 24 34          	lea    0x34(%esp),%eax
46acb3:	50                   	push   %eax
46acb4:	53                   	push   %ebx
46acb5:	ff 15 2c 74 4a 00    	call   *0x4a742c
46acbb:	8b 47 5c             	mov    0x5c(%edi),%eax
46acbe:	8b cb                	mov    %ebx,%ecx
46acc0:	c1 e1 02             	shl    $0x2,%ecx
46acc3:	03 4c 24 18          	add    0x18(%esp),%ecx
46acc7:	48                   	dec    %eax
46acc8:	3b d8                	cmp    %eax,%ebx
46acca:	8b 44 24 24          	mov    0x24(%esp),%eax
46acce:	74 02                	je     0x46acd2
46acd0:	8b c6                	mov    %esi,%eax
46acd2:	89 01                	mov    %eax,(%ecx)
46acd4:	8b c3                	mov    %ebx,%eax
46acd6:	8b 97 94 00 00 00    	mov    0x94(%edi),%edx
46acdc:	33 c9                	xor    %ecx,%ecx
46acde:	c1 e0 02             	shl    $0x2,%eax
46ace1:	03 d0                	add    %eax,%edx
46ace3:	8b c6                	mov    %esi,%eax
46ace5:	2b 44 24 20          	sub    0x20(%esp),%eax
46ace9:	3b 44 24 30          	cmp    0x30(%esp),%eax
46aced:	56                   	push   %esi
46acee:	0f 9d c1             	setge  %cl
46acf1:	89 0a                	mov    %ecx,(%edx)
46acf3:	8b cf                	mov    %edi,%ecx
46acf5:	53                   	push   %ebx
46acf6:	e8 b1 fd ff ff       	call   0x46aaac
46acfb:	53                   	push   %ebx
46acfc:	8b cf                	mov    %edi,%ecx
46acfe:	ff 15 34 73 4a 00    	call   *0x4a7334
46ad04:	a9 00 00 00 08       	test   $0x8000000,%eax
46ad09:	77 18                	ja     0x46ad23
46ad0b:	6a fa                	push   $0xfffffffa
46ad0d:	58                   	pop    %eax
46ad0e:	2b 44 24 48          	sub    0x48(%esp),%eax
46ad12:	2b 44 24 20          	sub    0x20(%esp),%eax
46ad16:	03 f0                	add    %eax,%esi
46ad18:	83 eb 01             	sub    $0x1,%ebx
46ad1b:	89 74 24 14          	mov    %esi,0x14(%esp)
46ad1f:	79 82                	jns    0x46aca3
46ad21:	eb 13                	jmp    0x46ad36
46ad23:	8b 44 24 10          	mov    0x10(%esp),%eax
46ad27:	85 c0                	test   %eax,%eax
46ad29:	7e 0b                	jle    0x46ad36
46ad2b:	99                   	cltd
46ad2c:	f7 7c 24 1c          	idivl  0x1c(%esp)
46ad30:	2b f0                	sub    %eax,%esi
46ad32:	89 74 24 14          	mov    %esi,0x14(%esp)
46ad36:	8b 44 24 30          	mov    0x30(%esp),%eax
46ad3a:	33 f6                	xor    %esi,%esi
46ad3c:	89 44 24 10          	mov    %eax,0x10(%esp)
46ad40:	85 db                	test   %ebx,%ebx
46ad42:	0f 8e 89 00 00 00    	jle    0x46add1
46ad48:	8d 44 24 24          	lea    0x24(%esp),%eax
46ad4c:	8b cf                	mov    %edi,%ecx
46ad4e:	50                   	push   %eax
46ad4f:	8d 44 24 30          	lea    0x30(%esp),%eax
46ad53:	50                   	push   %eax
46ad54:	8d 44 24 30          	lea    0x30(%esp),%eax
46ad58:	50                   	push   %eax
46ad59:	56                   	push   %esi
46ad5a:	ff 15 2c 74 4a 00    	call   *0x4a742c
46ad60:	8b 54 24 10          	mov    0x10(%esp),%edx
46ad64:	8b 44 24 48          	mov    0x48(%esp),%eax
46ad68:	83 c2 06             	add    $0x6,%edx
46ad6b:	03 44 24 24          	add    0x24(%esp),%eax
46ad6f:	8b 4c 24 14          	mov    0x14(%esp),%ecx
46ad73:	03 d0                	add    %eax,%edx
46ad75:	89 54 24 10          	mov    %edx,0x10(%esp)
46ad79:	3b d1                	cmp    %ecx,%edx
46ad7b:	7d 24                	jge    0x46ada1
46ad7d:	8b 44 24 18          	mov    0x18(%esp),%eax
46ad81:	8b cf                	mov    %edi,%ecx
46ad83:	52                   	push   %edx
46ad84:	56                   	push   %esi
46ad85:	89 14 b0             	mov    %edx,(%eax,%esi,4)
46ad88:	e8 1f fd ff ff       	call   0x46aaac
46ad8d:	8b 87 94 00 00 00    	mov    0x94(%edi),%eax
46ad93:	c7 04 b0 01 00 00 00 	movl   $0x1,(%eax,%esi,4)
46ad9a:	46                   	inc    %esi
46ad9b:	3b f3                	cmp    %ebx,%esi
46ad9d:	7c a9                	jl     0x46ad48
46ad9f:	eb 28                	jmp    0x46adc9
46ada1:	8b 87 94 00 00 00    	mov    0x94(%edi),%eax
46ada7:	83 24 b0 00          	andl   $0x0,(%eax,%esi,4)
46adab:	eb 20                	jmp    0x46adcd
46adad:	8b 44 24 18          	mov    0x18(%esp),%eax
46adb1:	6a 00                	push   $0x0
46adb3:	56                   	push   %esi
46adb4:	89 0c b0             	mov    %ecx,(%eax,%esi,4)
46adb7:	8b cf                	mov    %edi,%ecx
46adb9:	e8 ee fc ff ff       	call   0x46aaac
46adbe:	8b 87 94 00 00 00    	mov    0x94(%edi),%eax
46adc4:	83 24 b0 00          	andl   $0x0,(%eax,%esi,4)
46adc8:	46                   	inc    %esi
46adc9:	8b 4c 24 14          	mov    0x14(%esp),%ecx
46adcd:	3b f3                	cmp    %ebx,%esi
46adcf:	7c dc                	jl     0x46adad
46add1:	8b 07                	mov    (%edi),%eax
46add3:	8b 5c 24 18          	mov    0x18(%esp),%ebx
46add7:	53                   	push   %ebx
46add8:	ff 77 5c             	push   0x5c(%edi)
46addb:	8b b0 a8 00 00 00    	mov    0xa8(%eax),%esi
46ade1:	8b ce                	mov    %esi,%ecx
46ade3:	68 04 04 00 00       	push   $0x404
46ade8:	ff 15 2c 81 4a 00    	call   *0x4a812c
46adee:	8b cf                	mov    %edi,%ecx
46adf0:	ff d6                	call   *%esi
46adf2:	53                   	push   %ebx
46adf3:	e8 54 2c 02 00       	call   0x48da4c
46adf8:	59                   	pop    %ecx
46adf9:	8b 4c 24 4c          	mov    0x4c(%esp),%ecx
46adfd:	5f                   	pop    %edi
46adfe:	5e                   	pop    %esi
46adff:	5b                   	pop    %ebx
46ae00:	33 cc                	xor    %esp,%ecx
46ae02:	e8 f9 50 02 00       	call   0x48ff00
46ae07:	8b e5                	mov    %ebp,%esp
46ae09:	5d                   	pop    %ebp
46ae0a:	c2 0c 00             	ret    $0xc
46ae0d:	cc                   	int3
46ae0e:	cc                   	int3
46ae0f:	cc                   	int3
46ae10:	8b ff                	mov    %edi,%edi
46ae12:	55                   	push   %ebp
46ae13:	8b ec                	mov    %esp,%ebp
46ae15:	83 e4 f8             	and    $0xfffffff8,%esp
46ae18:	83 ec 34             	sub    $0x34,%esp
46ae1b:	a1 dc 38 4a 00       	mov    0x4a38dc,%eax
46ae20:	33 c4                	xor    %esp,%eax
46ae22:	89 44 24 30          	mov    %eax,0x30(%esp)
46ae26:	53                   	push   %ebx
46ae27:	56                   	push   %esi
46ae28:	33 f6                	xor    %esi,%esi
46ae2a:	8b d1                	mov    %ecx,%edx
46ae2c:	8b 4d 08             	mov    0x8(%ebp),%ecx
46ae2f:	8b de                	mov    %esi,%ebx
46ae31:	57                   	push   %edi
46ae32:	8b fe                	mov    %esi,%edi
46ae34:	89 54 24 18          	mov    %edx,0x18(%esp)
46ae38:	8b c1                	mov    %ecx,%eax
46ae3a:	89 4c 24 1c          	mov    %ecx,0x1c(%esp)
46ae3e:	c1 e0 05             	shl    $0x5,%eax
46ae41:	8b f1                	mov    %ecx,%esi
46ae43:	c1 e6 05             	shl    $0x5,%esi
46ae46:	89 44 24 10          	mov    %eax,0x10(%esp)
46ae4a:	89 74 24 14          	mov    %esi,0x14(%esp)
46ae4e:	8b 8a 84 00 00 00    	mov    0x84(%edx),%ecx
46ae54:	8b 54 31 04          	mov    0x4(%ecx,%esi,1),%edx
46ae58:	85 d2                	test   %edx,%edx
46ae5a:	74 59                	je     0x46aeb5
46ae5c:	8b 44 31 08          	mov    0x8(%ecx,%esi,1),%eax
46ae60:	2b c2                	sub    %edx,%eax
46ae62:	c1 f8 02             	sar    $0x2,%eax
46ae65:	3b d8                	cmp    %eax,%ebx
46ae67:	73 4c                	jae    0x46aeb5
46ae69:	8b 44 24 10          	mov    0x10(%esp),%eax
46ae6d:	8b 54 08 14          	mov    0x14(%eax,%ecx,1),%edx
46ae71:	85 d2                	test   %edx,%edx
46ae73:	89 54 24 0c          	mov    %edx,0xc(%esp)
46ae77:	8b 54 31 04          	mov    0x4(%ecx,%esi,1),%edx
46ae7b:	74 16                	je     0x46ae93
46ae7d:	8b 44 08 18          	mov    0x18(%eax,%ecx,1),%eax
46ae81:	2b 44 24 0c          	sub    0xc(%esp),%eax
46ae85:	c1 f8 02             	sar    $0x2,%eax
46ae88:	3b c3                	cmp    %ebx,%eax
46ae8a:	76 07                	jbe    0x46ae93
46ae8c:	8b 44 31 14          	mov    0x14(%ecx,%esi,1),%eax
46ae90:	03 3c 98             	add    (%eax,%ebx,4),%edi
46ae93:	8d 44 24 2c          	lea    0x2c(%esp),%eax
46ae97:	50                   	push   %eax
46ae98:	8b 04 9a             	mov    (%edx,%ebx,4),%eax
46ae9b:	ff 70 20             	push   0x20(%eax)
46ae9e:	ff 15 e8 7d 4a 00    	call   *0x4a7de8
46aea4:	8b 44 24 34          	mov    0x34(%esp),%eax
46aea8:	2b 44 24 2c          	sub    0x2c(%esp),%eax
46aeac:	8b 54 24 18          	mov    0x18(%esp),%edx
46aeb0:	03 f8                	add    %eax,%edi
46aeb2:	43                   	inc    %ebx
46aeb3:	eb 99                	jmp    0x46ae4e
46aeb5:	8b 44 24 10          	mov    0x10(%esp),%eax
46aeb9:	6a 00                	push   $0x0
46aebb:	5e                   	pop    %esi
46aebc:	8b 5c 08 14          	mov    0x14(%eax,%ecx,1),%ebx
46aec0:	89 5c 24 0c          	mov    %ebx,0xc(%esp)
46aec4:	85 db                	test   %ebx,%ebx
46aec6:	75 04                	jne    0x46aecc
46aec8:	8b de                	mov    %esi,%ebx
46aeca:	eb 0b                	jmp    0x46aed7
46aecc:	8b 5c 08 18          	mov    0x18(%eax,%ecx,1),%ebx
46aed0:	2b 5c 08 14          	sub    0x14(%eax,%ecx,1),%ebx
46aed4:	c1 fb 02             	sar    $0x2,%ebx
46aed7:	85 d2                	test   %edx,%edx
46aed9:	75 04                	jne    0x46aedf
46aedb:	8b c6                	mov    %esi,%eax
46aedd:	eb 0d                	jmp    0x46aeec
46aedf:	8b 44 24 14          	mov    0x14(%esp),%eax
46aee3:	8b 44 01 08          	mov    0x8(%ecx,%eax,1),%eax
46aee7:	2b c2                	sub    %edx,%eax
46aee9:	c1 f8 02             	sar    $0x2,%eax
46aeec:	3b d8                	cmp    %eax,%ebx
46aeee:	76 18                	jbe    0x46af08
46aef0:	85 d2                	test   %edx,%edx
46aef2:	74 0d                	je     0x46af01
46aef4:	8b 44 24 14          	mov    0x14(%esp),%eax
46aef8:	8b 74 01 08          	mov    0x8(%ecx,%eax,1),%esi
46aefc:	2b f2                	sub    %edx,%esi
46aefe:	c1 fe 02             	sar    $0x2,%esi
46af01:	8b 44 24 0c          	mov    0xc(%esp),%eax
46af05:	03 3c b0             	add    (%eax,%esi,4),%edi
46af08:	8b 74 24 1c          	mov    0x1c(%esp),%esi
46af0c:	8d 44 24 28          	lea    0x28(%esp),%eax
46af10:	8b 4c 24 18          	mov    0x18(%esp),%ecx
46af14:	50                   	push   %eax
46af15:	8d 44 24 24          	lea    0x24(%esp),%eax
46af19:	50                   	push   %eax
46af1a:	8d 44 24 2c          	lea    0x2c(%esp),%eax
46af1e:	50                   	push   %eax
46af1f:	56                   	push   %esi
46af20:	ff 15 2c 74 4a 00    	call   *0x4a742c
46af26:	8b 4c 24 18          	mov    0x18(%esp),%ecx
46af2a:	57                   	push   %edi
46af2b:	ff 74 24 24          	push   0x24(%esp)
46af2f:	ff 74 24 2c          	push   0x2c(%esp)
46af33:	56                   	push   %esi
46af34:	ff 15 30 74 4a 00    	call   *0x4a7430
46af3a:	8b 4c 24 3c          	mov    0x3c(%esp),%ecx
46af3e:	5f                   	pop    %edi
46af3f:	5e                   	pop    %esi
46af40:	5b                   	pop    %ebx
46af41:	33 cc                	xor    %esp,%ecx
46af43:	e8 b8 4f 02 00       	call   0x48ff00
46af48:	8b e5                	mov    %ebp,%esp
46af4a:	5d                   	pop    %ebp
46af4b:	c2 04 00             	ret    $0x4
46af4e:	8b ff                	mov    %edi,%edi
46af50:	55                   	push   %ebp
46af51:	8b ec                	mov    %esp,%ebp
46af53:	56                   	push   %esi
46af54:	8b b1 84 00 00 00    	mov    0x84(%ecx),%esi
46af5a:	33 d2                	xor    %edx,%edx
46af5c:	85 f6                	test   %esi,%esi
46af5e:	74 1b                	je     0x46af7b
46af60:	8b 81 88 00 00 00    	mov    0x88(%ecx),%eax
46af66:	2b c6                	sub    %esi,%eax
46af68:	8b 75 08             	mov    0x8(%ebp),%esi
46af6b:	c1 f8 05             	sar    $0x5,%eax
46af6e:	3b f0                	cmp    %eax,%esi
46af70:	73 09                	jae    0x46af7b
46af72:	8b 81 94 00 00 00    	mov    0x94(%ecx),%eax
46af78:	8b 14 b0             	mov    (%eax,%esi,4),%edx
46af7b:	8b c2                	mov    %edx,%eax
46af7d:	5e                   	pop    %esi
46af7e:	5d                   	pop    %ebp
46af7f:	c2 04 00             	ret    $0x4
46af82:	8b ff                	mov    %edi,%edi
46af84:	55                   	push   %ebp
46af85:	8b ec                	mov    %esp,%ebp
46af87:	83 ec 0c             	sub    $0xc,%esp
46af8a:	53                   	push   %ebx
46af8b:	8b d9                	mov    %ecx,%ebx
46af8d:	56                   	push   %esi
46af8e:	57                   	push   %edi
46af8f:	89 5d f8             	mov    %ebx,-0x8(%ebp)
46af92:	8b 7b 08             	mov    0x8(%ebx),%edi
46af95:	8b 73 04             	mov    0x4(%ebx),%esi
46af98:	3b f7                	cmp    %edi,%esi
46af9a:	74 16                	je     0x46afb2
46af9c:	8b de                	mov    %esi,%ebx
46af9e:	8b cb                	mov    %ebx,%ecx
46afa0:	e8 c0 2e fb ff       	call   0x41de65
46afa5:	83 c3 20             	add    $0x20,%ebx
46afa8:	3b df                	cmp    %edi,%ebx
46afaa:	75 f2                	jne    0x46af9e
46afac:	8b 45 f8             	mov    -0x8(%ebp),%eax
46afaf:	89 70 08             	mov    %esi,0x8(%eax)
46afb2:	5f                   	pop    %edi
46afb3:	5e                   	pop    %esi
46afb4:	5b                   	pop    %ebx
46afb5:	c9                   	leave
46afb6:	c3                   	ret
46afb7:	6a 10                	push   $0x10
46afb9:	b8 a6 53 49 00       	mov    $0x4953a6,%eax
46afbe:	e8 79 55 02 00       	call   0x49053c
46afc3:	8b f9                	mov    %ecx,%edi
46afc5:	8b 5d 08             	mov    0x8(%ebp),%ebx
46afc8:	81 fb ff ff ff 07    	cmp    $0x7ffffff,%ebx
46afce:	0f 87 a5 00 00 00    	ja     0x46b079
46afd4:	83 7f 04 00          	cmpl   $0x0,0x4(%edi)
46afd8:	75 06                	jne    0x46afe0
46afda:	33 f6                	xor    %esi,%esi
46afdc:	8b c6                	mov    %esi,%eax
46afde:	eb 0b                	jmp    0x46afeb
46afe0:	8b 47 0c             	mov    0xc(%edi),%eax
46afe3:	2b 47 04             	sub    0x4(%edi),%eax
46afe6:	c1 f8 05             	sar    $0x5,%eax
46afe9:	33 f6                	xor    %esi,%esi
46afeb:	3b c3                	cmp    %ebx,%eax
46afed:	73 70                	jae    0x46b05f
46afef:	53                   	push   %ebx
46aff0:	e8 82 01 00 00       	call   0x46b177
46aff5:	89 75 fc             	mov    %esi,-0x4(%ebp)
46aff8:	8b c8                	mov    %eax,%ecx
46affa:	ff 75 e4             	push   -0x1c(%ebp)
46affd:	89 45 e8             	mov    %eax,-0x18(%ebp)
46b000:	ff 75 e4             	push   -0x1c(%ebp)
46b003:	ff 77 08             	push   0x8(%edi)
46b006:	ff 77 04             	push   0x4(%edi)
46b009:	e8 74 04 00 00       	call   0x46b482
46b00e:	8b 47 04             	mov    0x4(%edi),%eax
46b011:	89 45 ec             	mov    %eax,-0x14(%ebp)