40193d:	6a 02                	push   $0x2
40193f:	53                   	push   %ebx
401940:	8b 35 6c 33 40 00    	mov    0x40336c,%esi
401946:	8b ce                	mov    %esi,%ecx
401948:	ff 15 d0 40 40 00    	call   *0x4040d0
40194e:	ff d6                	call   *%esi
401950:	a1 8c 40 40 00       	mov    0x40408c,%eax
401955:	8b 08                	mov    (%eax),%ecx
401957:	85 c9                	test   %ecx,%ecx
401959:	74 82                	je     0x4018dd
40195b:	89 4d e0             	mov    %ecx,-0x20(%ebp)
40195e:	6a 20                	push   $0x20
401960:	5e                   	pop    %esi
401961:	8b 55 e4             	mov    -0x1c(%ebp),%edx
401964:	0f b7 01             	movzwl (%ecx),%eax
401967:	66 3b c6             	cmp    %si,%ax
40196a:	77 4f                	ja     0x4019bb
40196c:	66 85 c0             	test   %ax,%ax
40196f:	74 19                	je     0x40198a
401971:	85 d2                	test   %edx,%edx
401973:	75 46                	jne    0x4019bb
401975:	66 85 c0             	test   %ax,%ax
401978:	74 10                	je     0x40198a
40197a:	66 3b c6             	cmp    %si,%ax
40197d:	77 0b                	ja     0x40198a
40197f:	83 c1 02             	add    $0x2,%ecx
401982:	89 4d e0             	mov    %ecx,-0x20(%ebp)
401985:	0f b7 01             	movzwl (%ecx),%eax
401988:	eb eb                	jmp    0x401975
40198a:	f6 45 c4 01          	testb  $0x1,-0x3c(%ebp)
40198e:	74 06                	je     0x401996
401990:	0f b7 45 c8          	movzwl -0x38(%ebp),%eax
401994:	eb 03                	jmp    0x401999
401996:	6a 0a                	push   $0xa
401998:	58                   	pop    %eax
401999:	50                   	push   %eax
40199a:	51                   	push   %ecx
40199b:	53                   	push   %ebx
40199c:	68 00 00 40 00       	push   $0x400000
4019a1:	e8 08 fd ff ff       	call   0x4016ae
4019a6:	a3 10 30 40 00       	mov    %eax,0x403010
4019ab:	83 3d 28 30 40 00 00 	cmpl   $0x0,0x403028
4019b2:	75 4f                	jne    0x401a03
4019b4:	50                   	push   %eax
4019b5:	ff 15 c0 40 40 00    	call   *0x4040c0
4019bb:	83 f8 22             	cmp    $0x22,%eax
4019be:	75 0c                	jne    0x4019cc
4019c0:	33 c0                	xor    %eax,%eax
4019c2:	85 d2                	test   %edx,%edx
4019c4:	0f 94 c0             	sete   %al
4019c7:	8b d0                	mov    %eax,%edx
4019c9:	89 55 e4             	mov    %edx,-0x1c(%ebp)
4019cc:	83 c1 02             	add    $0x2,%ecx
4019cf:	89 4d e0             	mov    %ecx,-0x20(%ebp)
4019d2:	eb 90                	jmp    0x401964
4019d4:	8b 4d ec             	mov    -0x14(%ebp),%ecx
4019d7:	8b 01                	mov    (%ecx),%eax
4019d9:	8b 00                	mov    (%eax),%eax
4019db:	89 45 dc             	mov    %eax,-0x24(%ebp)
4019de:	51                   	push   %ecx
4019df:	50                   	push   %eax
4019e0:	e8 69 01 00 00       	call   0x401b4e
4019e5:	59                   	pop    %ecx
4019e6:	59                   	pop    %ecx
4019e7:	c3                   	ret
4019e8:	8b 65 e8             	mov    -0x18(%ebp),%esp
4019eb:	8b 45 dc             	mov    -0x24(%ebp),%eax
4019ee:	a3 10 30 40 00       	mov    %eax,0x403010
4019f3:	83 3d 28 30 40 00 00 	cmpl   $0x0,0x403028
4019fa:	75 07                	jne    0x401a03
4019fc:	50                   	push   %eax
4019fd:	ff 15 bc 40 40 00    	call   *0x4040bc
401a03:	83 3d 14 30 40 00 00 	cmpl   $0x0,0x403014
401a0a:	75 0b                	jne    0x401a17
401a0c:	ff 15 b8 40 40 00    	call   *0x4040b8
401a12:	a1 10 30 40 00       	mov    0x403010,%eax
401a17:	c7 45 fc fe ff ff ff 	movl   $0xfffffffe,-0x4(%ebp)
401a1e:	8b 4d f0             	mov    -0x10(%ebp),%ecx
401a21:	64 89 0d 00 00 00 00 	mov    %ecx,%fs:0x0
401a28:	59                   	pop    %ecx
401a29:	5f                   	pop    %edi
401a2a:	5e                   	pop    %esi
401a2b:	5b                   	pop    %ebx
401a2c:	c9                   	leave
401a2d:	c3                   	ret
401a2e:	8b ff                	mov    %edi,%edi
401a30:	55                   	push   %ebp
401a31:	8b ec                	mov    %esp,%ebp
401a33:	56                   	push   %esi
401a34:	8b 75 08             	mov    0x8(%ebp),%esi
401a37:	33 c0                	xor    %eax,%eax
401a39:	3b 75 0c             	cmp    0xc(%ebp),%esi
401a3c:	73 1e                	jae    0x401a5c
401a3e:	57                   	push   %edi
401a3f:	85 c0                	test   %eax,%eax
401a41:	75 18                	jne    0x401a5b
401a43:	8b 3e                	mov    (%esi),%edi
401a45:	85 ff                	test   %edi,%edi
401a47:	74 0a                	je     0x401a53
401a49:	8b cf                	mov    %edi,%ecx
401a4b:	ff 15 d0 40 40 00    	call   *0x4040d0
401a51:	ff d7                	call   *%edi
401a53:	83 c6 04             	add    $0x4,%esi
401a56:	3b 75 0c             	cmp    0xc(%ebp),%esi
401a59:	72 e4                	jb     0x401a3f
401a5b:	5f                   	pop    %edi
401a5c:	5e                   	pop    %esi
401a5d:	5d                   	pop    %ebp
401a5e:	c3                   	ret
401a5f:	b8 4d 5a 00 00       	mov    $0x5a4d,%eax
401a64:	66 39 05 00 00 40 00 	cmp    %ax,0x400000
401a6b:	75 55                	jne    0x401ac2
401a6d:	8b 0d 3c 00 40 00    	mov    0x40003c,%ecx
401a73:	81 b9 00 00 40 00 50 	cmpl   $0x4550,0x400000(%ecx)
401a7a:	45 00 00
401a7d:	75 43                	jne    0x401ac2
401a7f:	0f b7 81 18 00 40 00 	movzwl 0x400018(%ecx),%eax
401a86:	ba 0b 01 00 00       	mov    $0x10b,%edx
401a8b:	66 3b c2             	cmp    %dx,%ax
401a8e:	74 1f                	je     0x401aaf
401a90:	ba 0b 02 00 00       	mov    $0x20b,%edx
401a95:	66 3b c2             	cmp    %dx,%ax
401a98:	75 28                	jne    0x401ac2
401a9a:	83 b9 84 00 40 00 0e 	cmpl   $0xe,0x400084(%ecx)
401aa1:	76 1f                	jbe    0x401ac2
401aa3:	33 c0                	xor    %eax,%eax
401aa5:	39 81 f8 00 40 00    	cmp    %eax,0x4000f8(%ecx)
401aab:	0f 95 c0             	setne  %al
401aae:	c3                   	ret
401aaf:	83 b9 74 00 40 00 0e 	cmpl   $0xe,0x400074(%ecx)
401ab6:	76 0a                	jbe    0x401ac2
401ab8:	33 c0                	xor    %eax,%eax
401aba:	39 81 e8 00 40 00    	cmp    %eax,0x4000e8(%ecx)
401ac0:	eb e9                	jmp    0x401aab
401ac2:	33 c0                	xor    %eax,%eax
401ac4:	c3                   	ret
401ac5:	cc                   	int3
401ac6:	cc                   	int3
401ac7:	cc                   	int3
401ac8:	cc                   	int3
401ac9:	cc                   	int3
401aca:	cc                   	int3
401acb:	cc                   	int3
401acc:	cc                   	int3
401acd:	cc                   	int3
401ace:	cc                   	int3
401acf:	cc                   	int3
401ad0:	e8 90 02 00 00       	call   0x401d65
401ad5:	e9 79 fd ff ff       	jmp    0x401853
401ada:	cc                   	int3
401adb:	cc                   	int3
401adc:	cc                   	int3
401add:	cc                   	int3
401ade:	cc                   	int3
401adf:	cc                   	int3
401ae0:	3b 0d 04 30 40 00    	cmp    0x403004,%ecx
401ae6:	75 03                	jne    0x401aeb
401ae8:	c2 00 00             	ret    $0x0
401aeb:	e9 ed 03 00 00       	jmp    0x401edd
401af0:	8b ff                	mov    %edi,%edi
401af2:	55                   	push   %ebp
401af3:	8b ec                	mov    %esp,%ebp
401af5:	8b 45 08             	mov    0x8(%ebp),%eax
401af8:	8b 00                	mov    (%eax),%eax
401afa:	81 38 63 73 6d e0    	cmpl   $0xe06d7363,(%eax)
401b00:	75 2b                	jne    0x401b2d
401b02:	83 78 10 03          	cmpl   $0x3,0x10(%eax)
401b06:	75 25                	jne    0x401b2d
401b08:	8b 40 14             	mov    0x14(%eax),%eax
401b0b:	3d 20 05 93 19       	cmp    $0x19930520,%eax
401b10:	74 15                	je     0x401b27
401b12:	3d 21 05 93 19       	cmp    $0x19930521,%eax
401b17:	74 0e                	je     0x401b27
401b19:	3d 22 05 93 19       	cmp    $0x19930522,%eax
401b1e:	74 07                	je     0x401b27
401b20:	3d 00 40 99 01       	cmp    $0x1994000,%eax
401b25:	75 06                	jne    0x401b2d
401b27:	ff 15 90 40 40 00    	call   *0x404090
401b2d:	33 c0                	xor    %eax,%eax
401b2f:	5d                   	pop    %ebp
401b30:	c2 04 00             	ret    $0x4
401b33:	cc                   	int3
401b34:	cc                   	int3
401b35:	cc                   	int3
401b36:	cc                   	int3
401b37:	cc                   	int3
401b38:	cc                   	int3
401b39:	cc                   	int3
401b3a:	cc                   	int3
401b3b:	cc                   	int3
401b3c:	cc                   	int3
401b3d:	cc                   	int3
401b3e:	cc                   	int3
401b3f:	cc                   	int3
401b40:	68 f0 1a 40 00       	push   $0x401af0
401b45:	ff 15 60 40 40 00    	call   *0x404060
401b4b:	33 c0                	xor    %eax,%eax
401b4d:	c3                   	ret
401b4e:	ff 25 ac 40 40 00    	jmp    *0x4040ac
401b54:	6a 0c                	push   $0xc
401b56:	68 18 20 40 00       	push   $0x402018
401b5b:	e8 b8 02 00 00       	call   0x401e18
401b60:	33 c9                	xor    %ecx,%ecx
401b62:	8b 45 08             	mov    0x8(%ebp),%eax
401b65:	85 c0                	test   %eax,%eax
401b67:	74 4b                	je     0x401bb4
401b69:	83 f8 ff             	cmp    $0xffffffff,%eax
401b6c:	74 46                	je     0x401bb4
401b6e:	89 4d fc             	mov    %ecx,-0x4(%ebp)
401b71:	ba 4d 5a 00 00       	mov    $0x5a4d,%edx
401b76:	66 39 10             	cmp    %dx,(%eax)
401b79:	75 32                	jne    0x401bad
401b7b:	8b 50 3c             	mov    0x3c(%eax),%edx
401b7e:	85 d2                	test   %edx,%edx
401b80:	78 2b                	js     0x401bad
401b82:	81 fa 00 00 00 10    	cmp    $0x10000000,%edx
401b88:	73 23                	jae    0x401bad
401b8a:	03 c2                	add    %edx,%eax
401b8c:	89 45 e4             	mov    %eax,-0x1c(%ebp)
401b8f:	8b 08                	mov    (%eax),%ecx
401b91:	81 e9 50 45 00 00    	sub    $0x4550,%ecx
401b97:	f7 d9                	neg    %ecx
401b99:	1b c9                	sbb    %ecx,%ecx
401b9b:	f7 d1                	not    %ecx
401b9d:	23 c8                	and    %eax,%ecx
401b9f:	eb 09                	jmp    0x401baa
401ba1:	33 c0                	xor    %eax,%eax
401ba3:	40                   	inc    %eax
401ba4:	c3                   	ret
401ba5:	8b 65 e8             	mov    -0x18(%ebp),%esp
401ba8:	33 c9                	xor    %ecx,%ecx
401baa:	89 4d e4             	mov    %ecx,-0x1c(%ebp)
401bad:	c7 45 fc fe ff ff ff 	movl   $0xfffffffe,-0x4(%ebp)
401bb4:	8b c1                	mov    %ecx,%eax
401bb6:	8b 4d f0             	mov    -0x10(%ebp),%ecx
401bb9:	64 89 0d 00 00 00 00 	mov    %ecx,%fs:0x0
401bc0:	59                   	pop    %ecx
401bc1:	5f                   	pop    %edi
401bc2:	5e                   	pop    %esi
401bc3:	5b                   	pop    %ebx
401bc4:	c9                   	leave
401bc5:	c2 04 00             	ret    $0x4
401bc8:	8b ff                	mov    %edi,%edi
401bca:	55                   	push   %ebp
401bcb:	8b ec                	mov    %esp,%ebp
401bcd:	6a 00                	push   $0x0
401bcf:	ff 15 5c 40 40 00    	call   *0x40405c
401bd5:	85 c0                	test   %eax,%eax
401bd7:	74 20                	je     0x401bf9
401bd9:	50                   	push   %eax
401bda:	e8 75 ff ff ff       	call   0x401b54
401bdf:	85 c0                	test   %eax,%eax
401be1:	74 16                	je     0x401bf9
401be3:	0f b7 48 5c          	movzwl 0x5c(%eax),%ecx
401be7:	6a 02                	push   $0x2
401be9:	58                   	pop    %eax
401bea:	66 3b c8             	cmp    %ax,%cx
401bed:	74 0d                	je     0x401bfc
401bef:	83 f9 03             	cmp    $0x3,%ecx
401bf2:	75 05                	jne    0x401bf9
401bf4:	33 c0                	xor    %eax,%eax
401bf6:	40                   	inc    %eax
401bf7:	5d                   	pop    %ebp
401bf8:	c3                   	ret
401bf9:	8b 45 08             	mov    0x8(%ebp),%eax
401bfc:	5d                   	pop    %ebp
401bfd:	c3                   	ret
401bfe:	ff 25 a4 40 40 00    	jmp    *0x4040a4
401c04:	cc                   	int3
401c05:	cc                   	int3
401c06:	cc                   	int3
401c07:	cc                   	int3
401c08:	cc                   	int3
401c09:	cc                   	int3
401c0a:	cc                   	int3
401c0b:	cc                   	int3
401c0c:	cc                   	int3
401c0d:	cc                   	int3
401c0e:	cc                   	int3
401c0f:	cc                   	int3
401c10:	33 c0                	xor    %eax,%eax
401c12:	c3                   	ret
401c13:	cc                   	int3
401c14:	cc                   	int3
401c15:	cc                   	int3
401c16:	cc                   	int3
401c17:	cc                   	int3
401c18:	cc                   	int3
401c19:	cc                   	int3
401c1a:	cc                   	int3
401c1b:	cc                   	int3
401c1c:	cc                   	int3
401c1d:	cc                   	int3
401c1e:	cc                   	int3
401c1f:	cc                   	int3
401c20:	8b ff                	mov    %edi,%edi
401c22:	55                   	push   %ebp
401c23:	8b ec                	mov    %esp,%ebp
401c25:	8b 45 08             	mov    0x8(%ebp),%eax
401c28:	33 d2                	xor    %edx,%edx
401c2a:	53                   	push   %ebx
401c2b:	56                   	push   %esi
401c2c:	57                   	push   %edi
401c2d:	8b 48 3c             	mov    0x3c(%eax),%ecx
401c30:	03 c8                	add    %eax,%ecx
401c32:	0f b7 41 14          	movzwl 0x14(%ecx),%eax
401c36:	0f b7 59 06          	movzwl 0x6(%ecx),%ebx
401c3a:	83 c0 18             	add    $0x18,%eax
401c3d:	03 c1                	add    %ecx,%eax
401c3f:	85 db                	test   %ebx,%ebx
401c41:	74 1b                	je     0x401c5e
401c43:	8b 7d 0c             	mov    0xc(%ebp),%edi
401c46:	8b 70 0c             	mov    0xc(%eax),%esi
401c49:	3b fe                	cmp    %esi,%edi
401c4b:	72 09                	jb     0x401c56
401c4d:	8b 48 08             	mov    0x8(%eax),%ecx
401c50:	03 ce                	add    %esi,%ecx
401c52:	3b f9                	cmp    %ecx,%edi
401c54:	72 0a                	jb     0x401c60
401c56:	42                   	inc    %edx
401c57:	83 c0 28             	add    $0x28,%eax
401c5a:	3b d3                	cmp    %ebx,%edx
401c5c:	72 e8                	jb     0x401c46
401c5e:	33 c0                	xor    %eax,%eax
401c60:	5f                   	pop    %edi
401c61:	5e                   	pop    %esi
401c62:	5b                   	pop    %ebx
401c63:	5d                   	pop    %ebp
401c64:	c3                   	ret
401c65:	cc                   	int3
401c66:	cc                   	int3
401c67:	cc                   	int3
401c68:	cc                   	int3
401c69:	cc                   	int3
401c6a:	cc                   	int3
401c6b:	cc                   	int3
401c6c:	cc                   	int3
401c6d:	cc                   	int3
401c6e:	cc                   	int3
401c6f:	cc                   	int3
401c70:	8b ff                	mov    %edi,%edi
401c72:	55                   	push   %ebp
401c73:	8b ec                	mov    %esp,%ebp
401c75:	6a fe                	push   $0xfffffffe
401c77:	68 38 20 40 00       	push   $0x402038
401c7c:	68 80 1e 40 00       	push   $0x401e80
401c81:	64 a1 00 00 00 00    	mov    %fs:0x0,%eax
401c87:	50                   	push   %eax
401c88:	83 ec 08             	sub    $0x8,%esp
401c8b:	53                   	push   %ebx