41c971:	83 c3 0c             	add    $0xc,%ebx
41c974:	3b f7                	cmp    %edi,%esi
41c976:	72 ee                	jb     0x41c966
41c978:	8b 45 08             	mov    0x8(%ebp),%eax
41c97b:	c7 00 01 00 00 00    	movl   $0x1,(%eax)
41c981:	5e                   	pop    %esi
41c982:	5f                   	pop    %edi
41c983:	5b                   	pop    %ebx
41c984:	c9                   	leave
41c985:	c2 04 00             	ret    $0x4
41c988:	8b 5d fc             	mov    -0x4(%ebp),%ebx
41c98b:	42                   	inc    %edx
41c98c:	83 c1 0c             	add    $0xc,%ecx
41c98f:	3b d7                	cmp    %edi,%edx
41c991:	72 c2                	jb     0x41c955
41c993:	eb ec                	jmp    0x41c981
41c995:	8b ff                	mov    %edi,%edi
41c997:	55                   	push   %ebp
41c998:	8b ec                	mov    %esp,%ebp
41c99a:	b8 24 10 00 00       	mov    $0x1024,%eax
41c99f:	e8 8c 16 00 00       	call   0x41e030
41c9a4:	a1 08 85 43 00       	mov    0x438508,%eax
41c9a9:	33 c5                	xor    %ebp,%eax
41c9ab:	89 45 fc             	mov    %eax,-0x4(%ebp)
41c9ae:	8b 41 14             	mov    0x14(%ecx),%eax
41c9b1:	53                   	push   %ebx
41c9b2:	56                   	push   %esi
41c9b3:	33 f6                	xor    %esi,%esi
41c9b5:	89 95 e8 ef ff ff    	mov    %edx,-0x1018(%ebp)
41c9bb:	21 b5 e4 ef ff ff    	and    %esi,-0x101c(%ebp)
41c9c1:	33 db                	xor    %ebx,%ebx
41c9c3:	57                   	push   %edi
41c9c4:	8b 79 1c             	mov    0x1c(%ecx),%edi
41c9c7:	89 8d dc ef ff ff    	mov    %ecx,-0x1024(%ebp)
41c9cd:	66 3b 58 06          	cmp    0x6(%eax),%bx
41c9d1:	0f 83 2c 01 00 00    	jae    0x41cb03
41c9d7:	8b 5d 08             	mov    0x8(%ebp),%ebx
41c9da:	83 c7 04             	add    $0x4,%edi
41c9dd:	39 57 fc             	cmp    %edx,-0x4(%edi)
41c9e0:	0f 85 01 01 00 00    	jne    0x41cae7
41c9e6:	66 39 5f 08          	cmp    %bx,0x8(%edi)
41c9ea:	0f 85 f7 00 00 00    	jne    0x41cae7
41c9f0:	f7 47 08 00 00 01 00 	testl  $0x10000,0x8(%edi)
41c9f7:	74 0a                	je     0x41ca03
41c9f9:	83 7d 0c 00          	cmpl   $0x0,0xc(%ebp)
41c9fd:	0f 84 e4 00 00 00    	je     0x41cae7
41ca03:	8b 07                	mov    (%edi),%eax
41ca05:	89 85 f0 ef ff ff    	mov    %eax,-0x1010(%ebp)
41ca0b:	8b 47 04             	mov    0x4(%edi),%eax
41ca0e:	89 85 f4 ef ff ff    	mov    %eax,-0x100c(%ebp)
41ca14:	8d 85 ec ef ff ff    	lea    -0x1014(%ebp),%eax
41ca1a:	c7 85 ec ef ff ff 00 	movl   $0x1000,-0x1014(%ebp)
41ca21:	10 00 00
41ca24:	50                   	push   %eax
41ca25:	8d 85 f8 ef ff ff    	lea    -0x1008(%ebp),%eax
41ca2b:	50                   	push   %eax
41ca2c:	8d 85 e0 ef ff ff    	lea    -0x1020(%ebp),%eax
41ca32:	50                   	push   %eax
41ca33:	51                   	push   %ecx
41ca34:	8d 8d f0 ef ff ff    	lea    -0x1010(%ebp),%ecx
41ca3a:	e8 5b fb ff ff       	call   0x41c59a
41ca3f:	8b f0                	mov    %eax,%esi
41ca41:	85 f6                	test   %esi,%esi
41ca43:	0f 85 86 00 00 00    	jne    0x41cacf
41ca49:	8a 85 ec ef ff ff    	mov    -0x1014(%ebp),%al
41ca4f:	8b b5 e8 ef ff ff    	mov    -0x1018(%ebp),%esi
41ca55:	24 07                	and    $0x7,%al
41ca57:	0f b6 c0             	movzbl %al,%eax
41ca5a:	f7 d8                	neg    %eax
41ca5c:	1b c0                	sbb    %eax,%eax
41ca5e:	33 c9                	xor    %ecx,%ecx
41ca60:	f7 d0                	not    %eax
41ca62:	23 85 ec ef ff ff    	and    -0x1014(%ebp),%eax
41ca68:	8b d0                	mov    %eax,%edx
41ca6a:	89 85 ec ef ff ff    	mov    %eax,-0x1014(%ebp)
41ca70:	c1 ea 03             	shr    $0x3,%edx
41ca73:	85 d2                	test   %edx,%edx
41ca75:	74 18                	je     0x41ca8f
41ca77:	39 b4 cd f8 ef ff ff 	cmp    %esi,-0x1008(%ebp,%ecx,8)
41ca7e:	75 0a                	jne    0x41ca8a
41ca80:	66 39 9c cd fc ef ff 	cmp    %bx,-0x1004(%ebp,%ecx,8)
41ca87:	ff
41ca88:	74 27                	je     0x41cab1
41ca8a:	41                   	inc    %ecx
41ca8b:	3b ca                	cmp    %edx,%ecx
41ca8d:	72 e8                	jb     0x41ca77
41ca8f:	8d 48 08             	lea    0x8(%eax),%ecx
41ca92:	81 f9 00 10 00 00    	cmp    $0x1000,%ecx
41ca98:	77 17                	ja     0x41cab1
41ca9a:	8b c1                	mov    %ecx,%eax
41ca9c:	89 b4 d5 f8 ef ff ff 	mov    %esi,-0x1008(%ebp,%edx,8)
41caa3:	66 89 9c d5 fc ef ff 	mov    %bx,-0x1004(%ebp,%edx,8)
41caaa:	ff
41caab:	89 85 ec ef ff ff    	mov    %eax,-0x1014(%ebp)
41cab1:	6a 01                	push   $0x1
41cab3:	ff b5 e0 ef ff ff    	push   -0x1020(%ebp)
41cab9:	8d 95 f8 ef ff ff    	lea    -0x1008(%ebp),%edx
41cabf:	51                   	push   %ecx
41cac0:	51                   	push   %ecx
41cac1:	50                   	push   %eax
41cac2:	8d 8d f0 ef ff ff    	lea    -0x1010(%ebp),%ecx
41cac8:	e8 22 fb ff ff       	call   0x41c5ef
41cacd:	8b f0                	mov    %eax,%esi
41cacf:	81 fe 01 00 00 c0    	cmp    $0xc0000001,%esi
41cad5:	0f 84 39 ff ff ff    	je     0x41ca14
41cadb:	8b 95 e8 ef ff ff    	mov    -0x1018(%ebp),%edx
41cae1:	8b 8d dc ef ff ff    	mov    -0x1024(%ebp),%ecx
41cae7:	8b 41 14             	mov    0x14(%ecx),%eax
41caea:	83 c7 10             	add    $0x10,%edi
41caed:	ff 85 e4 ef ff ff    	incl   -0x101c(%ebp)
41caf3:	0f b7 40 06          	movzwl 0x6(%eax),%eax
41caf7:	39 85 e4 ef ff ff    	cmp    %eax,-0x101c(%ebp)
41cafd:	0f 82 da fe ff ff    	jb     0x41c9dd
41cb03:	8b 4d fc             	mov    -0x4(%ebp),%ecx
41cb06:	8b c6                	mov    %esi,%eax
41cb08:	5f                   	pop    %edi
41cb09:	5e                   	pop    %esi
41cb0a:	33 cd                	xor    %ebp,%ecx
41cb0c:	5b                   	pop    %ebx
41cb0d:	e8 ae dc ff ff       	call   0x41a7c0
41cb12:	c9                   	leave
41cb13:	c2 08 00             	ret    $0x8
41cb16:	8b ff                	mov    %edi,%edi
41cb18:	56                   	push   %esi
41cb19:	8b f1                	mov    %ecx,%esi
41cb1b:	57                   	push   %edi
41cb1c:	33 ff                	xor    %edi,%edi
41cb1e:	39 7e 30             	cmp    %edi,0x30(%esi)
41cb21:	74 17                	je     0x41cb3a
41cb23:	ff 76 24             	push   0x24(%esi)
41cb26:	57                   	push   %edi
41cb27:	ff 15 24 a1 43 00    	call   *0x43a124
41cb2d:	50                   	push   %eax
41cb2e:	ff 15 20 a1 43 00    	call   *0x43a120
41cb34:	89 7e 24             	mov    %edi,0x24(%esi)
41cb37:	89 7e 14             	mov    %edi,0x14(%esi)
41cb3a:	5f                   	pop    %edi
41cb3b:	5e                   	pop    %esi
41cb3c:	c3                   	ret
41cb3d:	8b ff                	mov    %edi,%edi
41cb3f:	55                   	push   %ebp
41cb40:	8b ec                	mov    %esp,%ebp
41cb42:	83 ec 30             	sub    $0x30,%esp
41cb45:	a1 08 85 43 00       	mov    0x438508,%eax
41cb4a:	33 c5                	xor    %ebp,%eax
41cb4c:	89 45 f8             	mov    %eax,-0x8(%ebp)
41cb4f:	53                   	push   %ebx
41cb50:	56                   	push   %esi
41cb51:	8b 75 0c             	mov    0xc(%ebp),%esi
41cb54:	33 db                	xor    %ebx,%ebx
41cb56:	57                   	push   %edi
41cb57:	6a 34                	push   $0x34
41cb59:	8b f9                	mov    %ecx,%edi
41cb5b:	89 55 d4             	mov    %edx,-0x2c(%ebp)
41cb5e:	53                   	push   %ebx
41cb5f:	57                   	push   %edi
41cb60:	89 7d f4             	mov    %edi,-0xc(%ebp)
41cb63:	89 75 e0             	mov    %esi,-0x20(%ebp)
41cb66:	89 5d d0             	mov    %ebx,-0x30(%ebp)
41cb69:	e8 f3 14 00 00       	call   0x41e061
41cb6e:	8b 45 d4             	mov    -0x2c(%ebp),%eax
41cb71:	83 c4 0c             	add    $0xc,%esp
41cb74:	f7 de                	neg    %esi
41cb76:	89 07                	mov    %eax,(%edi)
41cb78:	89 5d dc             	mov    %ebx,-0x24(%ebp)
41cb7b:	1b f6                	sbb    %esi,%esi
41cb7d:	81 e6 c8 00 00 00    	and    $0xc8,%esi
41cb83:	85 c0                	test   %eax,%eax
41cb85:	75 0d                	jne    0x41cb94
41cb87:	a1 e0 55 40 00       	mov    0x4055e0,%eax
41cb8c:	8b 0d e4 55 40 00    	mov    0x4055e4,%ecx
41cb92:	eb 0b                	jmp    0x41cb9f
41cb94:	a1 48 55 40 00       	mov    0x405548,%eax
41cb99:	8b 0d 4c 55 40 00    	mov    0x40554c,%ecx
41cb9f:	89 4d ec             	mov    %ecx,-0x14(%ebp)
41cba2:	8d 4d e4             	lea    -0x1c(%ebp),%ecx
41cba5:	51                   	push   %ecx
41cba6:	ff 75 e0             	push   -0x20(%ebp)
41cba9:	89 45 e8             	mov    %eax,-0x18(%ebp)
41cbac:	8d 47 08             	lea    0x8(%edi),%eax
41cbaf:	50                   	push   %eax
41cbb0:	51                   	push   %ecx
41cbb1:	8d 4d e8             	lea    -0x18(%ebp),%ecx
41cbb4:	89 75 e4             	mov    %esi,-0x1c(%ebp)
41cbb7:	e8 de f9 ff ff       	call   0x41c59a
41cbbc:	89 45 d8             	mov    %eax,-0x28(%ebp)
41cbbf:	6a 10                	push   $0x10
41cbc1:	5a                   	pop    %edx
41cbc2:	85 c0                	test   %eax,%eax
41cbc4:	75 74                	jne    0x41cc3a
41cbc6:	8b 4d e0             	mov    -0x20(%ebp),%ecx
41cbc9:	85 c9                	test   %ecx,%ecx
41cbcb:	74 04                	je     0x41cbd1
41cbcd:	8b d9                	mov    %ecx,%ebx
41cbcf:	eb 69                	jmp    0x41cc3a
41cbd1:	b8 c8 00 00 00       	mov    $0xc8,%eax
41cbd6:	3b f0                	cmp    %eax,%esi
41cbd8:	73 02                	jae    0x41cbdc
41cbda:	8b f0                	mov    %eax,%esi
41cbdc:	3b 75 e4             	cmp    -0x1c(%ebp),%esi
41cbdf:	73 03                	jae    0x41cbe4
41cbe1:	8b 75 e4             	mov    -0x1c(%ebp),%esi
41cbe4:	3b f2                	cmp    %edx,%esi
41cbe6:	73 02                	jae    0x41cbea
41cbe8:	8b f2                	mov    %edx,%esi
41cbea:	8b 45 dc             	mov    -0x24(%ebp),%eax
41cbed:	85 c0                	test   %eax,%eax
41cbef:	74 11                	je     0x41cc02
41cbf1:	50                   	push   %eax
41cbf2:	33 c9                	xor    %ecx,%ecx
41cbf4:	51                   	push   %ecx
41cbf5:	ff 15 24 a1 43 00    	call   *0x43a124
41cbfb:	50                   	push   %eax
41cbfc:	ff 15 20 a1 43 00    	call   *0x43a120
41cc02:	56                   	push   %esi
41cc03:	6a 00                	push   $0x0
41cc05:	ff 15 24 a1 43 00    	call   *0x43a124
41cc0b:	50                   	push   %eax
41cc0c:	ff 15 1c a1 43 00    	call   *0x43a11c
41cc12:	8b d8                	mov    %eax,%ebx
41cc14:	89 5d dc             	mov    %ebx,-0x24(%ebp)
41cc17:	85 db                	test   %ebx,%ebx
41cc19:	0f 84 a3 00 00 00    	je     0x41ccc2
41cc1f:	8d 45 e4             	lea    -0x1c(%ebp),%eax
41cc22:	89 75 e4             	mov    %esi,-0x1c(%ebp)
41cc25:	50                   	push   %eax
41cc26:	53                   	push   %ebx
41cc27:	8d 47 08             	lea    0x8(%edi),%eax
41cc2a:	50                   	push   %eax
41cc2b:	51                   	push   %ecx
41cc2c:	8d 4d e8             	lea    -0x18(%ebp),%ecx
41cc2f:	e8 66 f9 ff ff       	call   0x41c59a
41cc34:	6a 10                	push   $0x10
41cc36:	89 45 d8             	mov    %eax,-0x28(%ebp)
41cc39:	5a                   	pop    %edx
41cc3a:	3d 23 00 00 c0       	cmp    $0xc0000023,%eax
41cc3f:	74 90                	je     0x41cbd1
41cc41:	85 c0                	test   %eax,%eax
41cc43:	0f 85 52 01 00 00    	jne    0x41cd9b
41cc49:	85 db                	test   %ebx,%ebx
41cc4b:	0f 84 4a 01 00 00    	je     0x41cd9b
41cc51:	8b 55 e4             	mov    -0x1c(%ebp),%edx
41cc54:	83 fa 04             	cmp    $0x4,%edx
41cc57:	76 05                	jbe    0x41cc5e
41cc59:	8a 03                	mov    (%ebx),%al
41cc5b:	88 47 0c             	mov    %al,0xc(%edi)
41cc5e:	6a 10                	push   $0x10
41cc60:	59                   	pop    %ecx
41cc61:	3b d1                	cmp    %ecx,%edx
41cc63:	0f 82 dd 00 00 00    	jb     0x41cd46
41cc69:	80 7f 0c 02          	cmpb   $0x2,0xc(%edi)
41cc6d:	0f 85 d3 00 00 00    	jne    0x41cd46
41cc73:	0f b7 43 02          	movzwl 0x2(%ebx),%eax
41cc77:	66 3b c1             	cmp    %cx,%ax
41cc7a:	0f 82 c6 00 00 00    	jb     0x41cd46
41cc80:	0f b7 43 04          	movzwl 0x4(%ebx),%eax
41cc84:	6b c8 0c             	imul   $0xc,%eax,%ecx
41cc87:	0f b7 43 06          	movzwl 0x6(%ebx),%eax
41cc8b:	c1 e0 04             	shl    $0x4,%eax
41cc8e:	03 c8                	add    %eax,%ecx
41cc90:	0f b7 43 02          	movzwl 0x2(%ebx),%eax
41cc94:	03 c8                	add    %eax,%ecx
41cc96:	3b d1                	cmp    %ecx,%edx
41cc98:	0f 82 a5 00 00 00    	jb     0x41cd43
41cc9e:	0f b7 4b 04          	movzwl 0x4(%ebx),%ecx
41cca2:	33 c0                	xor    %eax,%eax
41cca4:	89 45 e0             	mov    %eax,-0x20(%ebp)
41cca7:	66 85 c9             	test   %cx,%cx
41ccaa:	74 4d                	je     0x41ccf9
41ccac:	89 45 d8             	mov    %eax,-0x28(%ebp)
41ccaf:	39 45 d4             	cmp    %eax,-0x2c(%ebp)
41ccb2:	75 18                	jne    0x41cccc
41ccb4:	8b 0d b0 55 40 00    	mov    0x4055b0,%ecx
41ccba:	8b 15 b4 55 40 00    	mov    0x4055b4,%edx
41ccc0:	eb 16                	jmp    0x41ccd8
41ccc2:	b8 9a 00 00 c0       	mov    $0xc000009a,%eax
41ccc7:	e9 e9 00 00 00       	jmp    0x41cdb5
41cccc:	8b 0d c8 55 40 00    	mov    0x4055c8,%ecx
41ccd2:	8b 15 cc 55 40 00    	mov    0x4055cc,%edx
41ccd8:	89 4d f0             	mov    %ecx,-0x10(%ebp)
41ccdb:	8d 4d d8             	lea    -0x28(%ebp),%ecx
41ccde:	51                   	push   %ecx
41ccdf:	50                   	push   %eax
41cce0:	8d 45 e0             	lea    -0x20(%ebp),%eax
41cce3:	89 55 f4             	mov    %edx,-0xc(%ebp)
41cce6:	50                   	push   %eax
41cce7:	51                   	push   %ecx
41cce8:	8d 4d f0             	lea    -0x10(%ebp),%ecx
41cceb:	e8 aa f8 ff ff       	call   0x41c59a
41ccf0:	8b 45 e0             	mov    -0x20(%ebp),%eax
41ccf3:	8b 55 e4             	mov    -0x1c(%ebp),%edx
41ccf6:	89 45 d0             	mov    %eax,-0x30(%ebp)
41ccf9:	8d 4b 10             	lea    0x10(%ebx),%ecx
41ccfc:	89 5f 14             	mov    %ebx,0x14(%edi)
41ccff:	89 4f 18             	mov    %ecx,0x18(%edi)
41cd02:	0f b7 43 04          	movzwl 0x4(%ebx),%eax
41cd06:	6b c0 0c             	imul   $0xc,%eax,%eax
41cd09:	03 c1                	add    %ecx,%eax
41cd0b:	89 47 1c             	mov    %eax,0x1c(%edi)
41cd0e:	33 c0                	xor    %eax,%eax
41cd10:	39 45 d0             	cmp    %eax,-0x30(%ebp)
41cd13:	0f 95 c0             	setne  %al
41cd16:	89 47 20             	mov    %eax,0x20(%edi)
41cd19:	80 3b 02             	cmpb   $0x2,(%ebx)
41cd1c:	75 5a                	jne    0x41cd78
41cd1e:	80 7b 01 02          	cmpb   $0x2,0x1(%ebx)
41cd22:	73 54                	jae    0x41cd78
41cd24:	0f b7 43 04          	movzwl 0x4(%ebx),%eax
41cd28:	6b d0 0c             	imul   $0xc,%eax,%edx
41cd2b:	0f b7 43 06          	movzwl 0x6(%ebx),%eax
41cd2f:	c1 e0 04             	shl    $0x4,%eax
41cd32:	03 d0                	add    %eax,%edx
41cd34:	0f b7 43 02          	movzwl 0x2(%ebx),%eax
41cd38:	03 d0                	add    %eax,%edx
41cd3a:	c7 47 10 01 00 00 00 	movl   $0x1,0x10(%edi)
41cd41:	eb 35                	jmp    0x41cd78
41cd43:	6a 10                	push   $0x10
41cd45:	59                   	pop    %ecx
41cd46:	89 4d e4             	mov    %ecx,-0x1c(%ebp)
41cd49:	33 c0                	xor    %eax,%eax
41cd4b:	8b fb                	mov    %ebx,%edi
41cd4d:	ab                   	stos   %eax,%es:(%edi)
41cd4e:	ab                   	stos   %eax,%es:(%edi)
41cd4f:	ab                   	stos   %eax,%es:(%edi)
41cd50:	ab                   	stos   %eax,%es:(%edi)
41cd51:	8b 7d f4             	mov    -0xc(%ebp),%edi
41cd54:	66 89 4b 02          	mov    %cx,0x2(%ebx)
41cd58:	66 c7 03 02 02       	movw   $0x202,(%ebx)
41cd5d:	8b 55 e4             	mov    -0x1c(%ebp),%edx
41cd60:	89 5f 14             	mov    %ebx,0x14(%edi)
41cd63:	0f b7 4b 02          	movzwl 0x2(%ebx),%ecx
41cd67:	03 cb                	add    %ebx,%ecx
41cd69:	89 4f 18             	mov    %ecx,0x18(%edi)
41cd6c:	0f b7 43 04          	movzwl 0x4(%ebx),%eax
41cd70:	6b c0 0c             	imul   $0xc,%eax,%eax
41cd73:	03 c1                	add    %ecx,%eax
41cd75:	89 47 1c             	mov    %eax,0x1c(%edi)
41cd78:	8b 4d dc             	mov    -0x24(%ebp),%ecx
41cd7b:	89 5f 24             	mov    %ebx,0x24(%edi)
41cd7e:	89 57 28             	mov    %edx,0x28(%edi)
41cd81:	85 c9                	test   %ecx,%ecx
41cd83:	75 05                	jne    0x41cd8a
41cd85:	be c8 00 00 00       	mov    $0xc8,%esi
41cd8a:	33 c0                	xor    %eax,%eax
41cd8c:	89 77 2c             	mov    %esi,0x2c(%edi)
41cd8f:	3b d9                	cmp    %ecx,%ebx
41cd91:	0f 94 c0             	sete   %al
41cd94:	89 47 30             	mov    %eax,0x30(%edi)
41cd97:	33 c0                	xor    %eax,%eax
41cd99:	eb 1a                	jmp    0x41cdb5