40bc19:	5f                   	pop    %edi
40bc1a:	5e                   	pop    %esi
40bc1b:	8b c3                	mov    %ebx,%eax
40bc1d:	5b                   	pop    %ebx
40bc1e:	c3                   	ret
40bc1f:	85 d2                	test   %edx,%edx
40bc21:	74 f6                	je     0x40bc19
40bc23:	eb ef                	jmp    0x40bc14
40bc25:	cc                   	int3
40bc26:	cc                   	int3
40bc27:	cc                   	int3
40bc28:	cc                   	int3
40bc29:	cc                   	int3
40bc2a:	cc                   	int3
40bc2b:	cc                   	int3
40bc2c:	cc                   	int3
40bc2d:	cc                   	int3
40bc2e:	cc                   	int3
40bc2f:	cc                   	int3
40bc30:	8b ff                	mov    %edi,%edi
40bc32:	55                   	push   %ebp
40bc33:	8b ec                	mov    %esp,%ebp
40bc35:	81 ec e8 00 00 00    	sub    $0xe8,%esp
40bc3b:	a1 b4 e0 42 00       	mov    0x42e0b4,%eax
40bc40:	33 c5                	xor    %ebp,%eax
40bc42:	89 45 f8             	mov    %eax,-0x8(%ebp)
40bc45:	53                   	push   %ebx
40bc46:	56                   	push   %esi
40bc47:	8b f1                	mov    %ecx,%esi
40bc49:	8b da                	mov    %edx,%ebx
40bc4b:	57                   	push   %edi
40bc4c:	85 f6                	test   %esi,%esi
40bc4e:	0f 84 ee 02 00 00    	je     0x40bf42
40bc54:	8d 51 02             	lea    0x2(%ecx),%edx
40bc57:	66 8b 01             	mov    (%ecx),%ax
40bc5a:	83 c1 02             	add    $0x2,%ecx
40bc5d:	66 85 c0             	test   %ax,%ax
40bc60:	75 f5                	jne    0x40bc57
40bc62:	2b ca                	sub    %edx,%ecx
40bc64:	d1 f9                	sar    $1,%ecx
40bc66:	8d 0c 8d 04 00 00 00 	lea    0x4(,%ecx,4),%ecx
40bc6d:	e8 5e 20 00 00       	call   0x40dcd0
40bc72:	89 85 18 ff ff ff    	mov    %eax,-0xe8(%ebp)
40bc78:	85 c0                	test   %eax,%eax
40bc7a:	0f 84 0f 13 01 00    	je     0x41cf8f
40bc80:	89 85 20 ff ff ff    	mov    %eax,-0xe0(%ebp)
40bc86:	bf d0 22 40 00       	mov    $0x4022d0,%edi
40bc8b:	33 c0                	xor    %eax,%eax
40bc8d:	89 85 28 ff ff ff    	mov    %eax,-0xd8(%ebp)
40bc93:	0f b7 0f             	movzwl (%edi),%ecx
40bc96:	89 8d 24 ff ff ff    	mov    %ecx,-0xdc(%ebp)
40bc9c:	66 85 c9             	test   %cx,%cx
40bc9f:	74 36                	je     0x40bcd7
40bca1:	85 db                	test   %ebx,%ebx
40bca3:	74 1b                	je     0x40bcc0
40bca5:	51                   	push   %ecx
40bca6:	53                   	push   %ebx
40bca7:	ff 15 b0 a3 44 00    	call   *0x44a3b0
40bcad:	83 c4 08             	add    $0x8,%esp
40bcb0:	85 c0                	test   %eax,%eax
40bcb2:	8b 85 28 ff ff ff    	mov    -0xd8(%ebp),%eax
40bcb8:	75 15                	jne    0x40bccf
40bcba:	8b 8d 24 ff ff ff    	mov    -0xdc(%ebp),%ecx
40bcc0:	66 89 8c 45 2c ff ff 	mov    %cx,-0xd4(%ebp,%eax,2)
40bcc7:	ff
40bcc8:	40                   	inc    %eax
40bcc9:	89 85 28 ff ff ff    	mov    %eax,-0xd8(%ebp)
40bccf:	83 c7 02             	add    $0x2,%edi
40bcd2:	83 f8 63             	cmp    $0x63,%eax
40bcd5:	72 bc                	jb     0x40bc93
40bcd7:	8b bd 20 ff ff ff    	mov    -0xe0(%ebp),%edi
40bcdd:	03 c0                	add    %eax,%eax
40bcdf:	3d c8 00 00 00       	cmp    $0xc8,%eax
40bce4:	0f 83 73 02 00 00    	jae    0x40bf5d
40bcea:	33 c9                	xor    %ecx,%ecx
40bcec:	c7 85 24 ff ff ff 01 	movl   $0x1,-0xdc(%ebp)
40bcf3:	00 00 00
40bcf6:	66 89 8c 05 2c ff ff 	mov    %cx,-0xd4(%ebp,%eax,1)
40bcfd:	ff
40bcfe:	0f b7 06             	movzwl (%esi),%eax
40bd01:	c7 85 28 ff ff ff 01 	movl   $0x1,-0xd8(%ebp)
40bd08:	00 00 00
40bd0b:	66 85 c0             	test   %ax,%ax
40bd0e:	0f 84 89 00 00 00    	je     0x40bd9d
40bd14:	8b c8                	mov    %eax,%ecx
40bd16:	66 83 f9 22          	cmp    $0x22,%cx
40bd1a:	74 2e                	je     0x40bd4a
40bd1c:	51                   	push   %ecx
40bd1d:	ff 15 ac a3 44 00    	call   *0x44a3ac
40bd23:	83 c4 04             	add    $0x4,%esp
40bd26:	85 c0                	test   %eax,%eax
40bd28:	0f 85 a0 00 00 00    	jne    0x40bdce
40bd2e:	0f b7 06             	movzwl (%esi),%eax
40bd31:	50                   	push   %eax
40bd32:	8d 85 2c ff ff ff    	lea    -0xd4(%ebp),%eax
40bd38:	50                   	push   %eax
40bd39:	ff 15 b0 a3 44 00    	call   *0x44a3b0
40bd3f:	83 c4 08             	add    $0x8,%esp
40bd42:	85 c0                	test   %eax,%eax
40bd44:	0f 85 84 00 00 00    	jne    0x40bdce
40bd4a:	c7 85 24 ff ff ff 00 	movl   $0x0,-0xdc(%ebp)
40bd51:	00 00 00
40bd54:	85 db                	test   %ebx,%ebx
40bd56:	74 16                	je     0x40bd6e
40bd58:	0f b7 06             	movzwl (%esi),%eax
40bd5b:	50                   	push   %eax
40bd5c:	53                   	push   %ebx
40bd5d:	ff 15 b0 a3 44 00    	call   *0x44a3b0
40bd63:	83 c4 08             	add    $0x8,%esp
40bd66:	85 c0                	test   %eax,%eax
40bd68:	0f 85 4f 01 00 00    	jne    0x40bebd
40bd6e:	66 8b 06             	mov    (%esi),%ax
40bd71:	66 89 07             	mov    %ax,(%edi)
40bd74:	83 c7 02             	add    $0x2,%edi
40bd77:	66 83 3e 22          	cmpw   $0x22,(%esi)
40bd7b:	0f 84 5f 01 00 00    	je     0x40bee0
40bd81:	c7 85 28 ff ff ff 00 	movl   $0x0,-0xd8(%ebp)
40bd88:	00 00 00
40bd8b:	0f b7 46 02          	movzwl 0x2(%esi),%eax
40bd8f:	83 c6 02             	add    $0x2,%esi
40bd92:	8b c8                	mov    %eax,%ecx
40bd94:	66 85 c0             	test   %ax,%ax
40bd97:	0f 85 79 ff ff ff    	jne    0x40bd16
40bd9d:	8b 8d 18 ff ff ff    	mov    -0xe8(%ebp),%ecx
40bda3:	2b f9                	sub    %ecx,%edi
40bda5:	d1 ff                	sar    $1,%edi
40bda7:	8d 14 7d 04 00 00 00 	lea    0x4(,%edi,2),%edx
40bdae:	e8 6d 1f 00 00       	call   0x40dd20
40bdb3:	85 c0                	test   %eax,%eax
40bdb5:	0f 84 d4 11 01 00    	je     0x41cf8f
40bdbb:	8b 4d f8             	mov    -0x8(%ebp),%ecx
40bdbe:	5f                   	pop    %edi
40bdbf:	5e                   	pop    %esi
40bdc0:	33 cd                	xor    %ebp,%ecx
40bdc2:	5b                   	pop    %ebx
40bdc3:	e8 68 ad 00 00       	call   0x416b30
40bdc8:	8b e5                	mov    %ebp,%esp
40bdca:	5d                   	pop    %ebp
40bdcb:	c2 04 00             	ret    $0x4
40bdce:	8b 45 08             	mov    0x8(%ebp),%eax
40bdd1:	a8 01                	test   $0x1,%al
40bdd3:	0f 85 57 01 00 00    	jne    0x40bf30
40bdd9:	83 e0 02             	and    $0x2,%eax
40bddc:	89 85 20 ff ff ff    	mov    %eax,-0xe0(%ebp)
40bde2:	74 1a                	je     0x40bdfe
40bde4:	85 db                	test   %ebx,%ebx
40bde6:	74 16                	je     0x40bdfe
40bde8:	0f b7 06             	movzwl (%esi),%eax
40bdeb:	50                   	push   %eax
40bdec:	53                   	push   %ebx
40bded:	ff 15 b0 a3 44 00    	call   *0x44a3b0
40bdf3:	83 c4 08             	add    $0x8,%esp
40bdf6:	85 c0                	test   %eax,%eax
40bdf8:	0f 85 4c ff ff ff    	jne    0x40bd4a
40bdfe:	8b 45 08             	mov    0x8(%ebp),%eax
40be01:	83 e0 04             	and    $0x4,%eax
40be04:	89 85 1c ff ff ff    	mov    %eax,-0xe4(%ebp)
40be0a:	0f 85 46 11 01 00    	jne    0x41cf56
40be10:	0f b7 06             	movzwl (%esi),%eax
40be13:	66 85 c0             	test   %ax,%ax
40be16:	74 85                	je     0x40bd9d
40be18:	8b c8                	mov    %eax,%ecx
40be1a:	8d 9b 00 00 00 00    	lea    0x0(%ebx),%ebx
40be20:	66 83 f9 22          	cmp    $0x22,%cx
40be24:	74 26                	je     0x40be4c
40be26:	51                   	push   %ecx
40be27:	ff 15 ac a3 44 00    	call   *0x44a3ac
40be2d:	83 c4 04             	add    $0x4,%esp
40be30:	85 c0                	test   %eax,%eax
40be32:	75 46                	jne    0x40be7a
40be34:	0f b7 06             	movzwl (%esi),%eax
40be37:	50                   	push   %eax
40be38:	8d 85 2c ff ff ff    	lea    -0xd4(%ebp),%eax
40be3e:	50                   	push   %eax
40be3f:	ff 15 b0 a3 44 00    	call   *0x44a3b0
40be45:	83 c4 08             	add    $0x8,%esp
40be48:	85 c0                	test   %eax,%eax
40be4a:	75 2e                	jne    0x40be7a
40be4c:	66 83 3e 00          	cmpw   $0x0,(%esi)
40be50:	0f 84 47 ff ff ff    	je     0x40bd9d
40be56:	83 bd 24 ff ff ff 00 	cmpl   $0x0,-0xdc(%ebp)
40be5d:	75 0c                	jne    0x40be6b
40be5f:	83 bd 28 ff ff ff 00 	cmpl   $0x0,-0xd8(%ebp)
40be66:	75 03                	jne    0x40be6b
40be68:	83 c7 02             	add    $0x2,%edi
40be6b:	c7 85 28 ff ff ff 01 	movl   $0x1,-0xd8(%ebp)
40be72:	00 00 00
40be75:	e9 d0 fe ff ff       	jmp    0x40bd4a
40be7a:	83 bd 20 ff ff ff 00 	cmpl   $0x0,-0xe0(%ebp)
40be81:	74 16                	je     0x40be99
40be83:	85 db                	test   %ebx,%ebx
40be85:	74 12                	je     0x40be99
40be87:	0f b7 06             	movzwl (%esi),%eax
40be8a:	50                   	push   %eax
40be8b:	53                   	push   %ebx
40be8c:	ff 15 b0 a3 44 00    	call   *0x44a3b0
40be92:	83 c4 08             	add    $0x8,%esp
40be95:	85 c0                	test   %eax,%eax
40be97:	75 b3                	jne    0x40be4c
40be99:	83 bd 1c ff ff ff 00 	cmpl   $0x0,-0xe4(%ebp)
40bea0:	0f 85 c7 10 01 00    	jne    0x41cf6d
40bea6:	0f b7 46 02          	movzwl 0x2(%esi),%eax
40beaa:	83 c6 02             	add    $0x2,%esi
40bead:	8b c8                	mov    %eax,%ecx
40beaf:	66 85 c0             	test   %ax,%ax
40beb2:	0f 85 68 ff ff ff    	jne    0x40be20
40beb8:	e9 e0 fe ff ff       	jmp    0x40bd9d
40bebd:	8b 45 08             	mov    0x8(%ebp),%eax
40bec0:	a8 02                	test   $0x2,%al
40bec2:	75 48                	jne    0x40bf0c
40bec4:	a8 04                	test   $0x4,%al
40bec6:	0f 85 b8 10 01 00    	jne    0x41cf84
40becc:	c7 85 28 ff ff ff 00 	movl   $0x0,-0xd8(%ebp)
40bed3:	00 00 00
40bed6:	83 c7 02             	add    $0x2,%edi
40bed9:	e9 ad fe ff ff       	jmp    0x40bd8b
40bede:	8b ff                	mov    %edi,%edi
40bee0:	66 8b 46 02          	mov    0x2(%esi),%ax
40bee4:	8b ce                	mov    %esi,%ecx
40bee6:	83 c6 02             	add    $0x2,%esi
40bee9:	66 89 07             	mov    %ax,(%edi)
40beec:	83 c7 02             	add    $0x2,%edi
40beef:	0f b7 06             	movzwl (%esi),%eax
40bef2:	66 85 c0             	test   %ax,%ax
40bef5:	74 5f                	je     0x40bf56
40bef7:	83 f8 22             	cmp    $0x22,%eax
40befa:	0f 84 81 fe ff ff    	je     0x40bd81
40bf00:	66 83 7e 02 00       	cmpw   $0x0,0x2(%esi)
40bf05:	75 d9                	jne    0x40bee0
40bf07:	e9 75 fe ff ff       	jmp    0x40bd81
40bf0c:	83 bd 28 ff ff ff 00 	cmpl   $0x0,-0xd8(%ebp)
40bf13:	0f b7 06             	movzwl (%esi),%eax
40bf16:	74 39                	je     0x40bf51
40bf18:	66 89 07             	mov    %ax,(%edi)
40bf1b:	83 c7 02             	add    $0x2,%edi
40bf1e:	c7 85 28 ff ff ff 01 	movl   $0x1,-0xd8(%ebp)
40bf25:	00 00 00
40bf28:	83 c7 02             	add    $0x2,%edi
40bf2b:	e9 5b fe ff ff       	jmp    0x40bd8b
40bf30:	83 bd 24 ff ff ff 00 	cmpl   $0x0,-0xdc(%ebp)
40bf37:	0f 84 0d fe ff ff    	je     0x40bd4a
40bf3d:	e9 97 fe ff ff       	jmp    0x40bdd9
40bf42:	b9 04 00 00 00       	mov    $0x4,%ecx
40bf47:	e8 84 1d 00 00       	call   0x40dcd0
40bf4c:	e9 62 fe ff ff       	jmp    0x40bdb3
40bf51:	83 c7 02             	add    $0x2,%edi
40bf54:	eb c2                	jmp    0x40bf18
40bf56:	8b f1                	mov    %ecx,%esi
40bf58:	e9 24 fe ff ff       	jmp    0x40bd81
40bf5d:	e8 16 ad 00 00       	call   0x416c78
40bf62:	cc                   	int3
40bf63:	cc                   	int3
40bf64:	cc                   	int3
40bf65:	cc                   	int3
40bf66:	cc                   	int3
40bf67:	cc                   	int3
40bf68:	cc                   	int3
40bf69:	cc                   	int3
40bf6a:	cc                   	int3
40bf6b:	cc                   	int3
40bf6c:	cc                   	int3
40bf6d:	cc                   	int3
40bf6e:	cc                   	int3
40bf6f:	cc                   	int3
40bf70:	8b ff                	mov    %edi,%edi
40bf72:	55                   	push   %ebp
40bf73:	8b ec                	mov    %esp,%ebp
40bf75:	6a fe                	push   $0xfffffffe
40bf77:	68 10 ca 42 00       	push   $0x42ca10
40bf7c:	68 00 6e 41 00       	push   $0x416e00
40bf81:	64 a1 00 00 00 00    	mov    %fs:0x0,%eax
40bf87:	50                   	push   %eax
40bf88:	83 ec 54             	sub    $0x54,%esp
40bf8b:	53                   	push   %ebx
40bf8c:	56                   	push   %esi
40bf8d:	57                   	push   %edi
40bf8e:	a1 b4 e0 42 00       	mov    0x42e0b4,%eax
40bf93:	31 45 f8             	xor    %eax,-0x8(%ebp)
40bf96:	33 c5                	xor    %ebp,%eax
40bf98:	50                   	push   %eax
40bf99:	8d 45 f0             	lea    -0x10(%ebp),%eax
40bf9c:	64 a3 00 00 00 00    	mov    %eax,%fs:0x0
40bfa2:	8b da                	mov    %edx,%ebx
40bfa4:	89 5d d0             	mov    %ebx,-0x30(%ebp)
40bfa7:	89 4d cc             	mov    %ecx,-0x34(%ebp)
40bfaa:	c7 45 c8 00 00 00 00 	movl   $0x0,-0x38(%ebp)
40bfb1:	33 ff                	xor    %edi,%edi
40bfb3:	89 7d dc             	mov    %edi,-0x24(%ebp)
40bfb6:	33 f6                	xor    %esi,%esi
40bfb8:	89 75 e0             	mov    %esi,-0x20(%ebp)
40bfbb:	89 75 fc             	mov    %esi,-0x4(%ebp)
40bfbe:	b9 00 40 00 00       	mov    $0x4000,%ecx
40bfc3:	e8 08 1d 00 00       	call   0x40dcd0
40bfc8:	89 45 c8             	mov    %eax,-0x38(%ebp)
40bfcb:	85 c0                	test   %eax,%eax
40bfcd:	0f 84 cf 0f 01 00    	je     0x41cfa2
40bfd3:	8b cb                	mov    %ebx,%ecx
40bfd5:	89 4d e4             	mov    %ecx,-0x1c(%ebp)
40bfd8:	8b f3                	mov    %ebx,%esi
40bfda:	8a 15 55 67 43 00    	mov    0x436755,%dl
40bfe0:	0f b7 01             	movzwl (%ecx),%eax
40bfe3:	66 85 c0             	test   %ax,%ax
40bfe6:	74 22                	je     0x40c00a
40bfe8:	66 8b 5d 0c          	mov    0xc(%ebp),%bx
40bfec:	66 3b c3             	cmp    %bx,%ax
40bfef:	74 19                	je     0x40c00a
40bff1:	84 d2                	test   %dl,%dl
40bff3:	74 05                	je     0x40bffa
40bff5:	83 f8 3a             	cmp    $0x3a,%eax
40bff8:	74 0a                	je     0x40c004
40bffa:	8d 4e 02             	lea    0x2(%esi),%ecx
40bffd:	89 4d e4             	mov    %ecx,-0x1c(%ebp)
40c000:	8b f1                	mov    %ecx,%esi
40c002:	eb dc                	jmp    0x40bfe0
40c004:	66 39 59 02          	cmp    %bx,0x2(%ecx)
40c008:	74 f0                	je     0x40bffa
40c00a:	66 83 39 00          	cmpw   $0x0,(%ecx)
40c00e:	0f 84 52 03 00 00    	je     0x40c366
40c014:	8b 5d d0             	mov    -0x30(%ebp),%ebx
40c017:	3b f3                	cmp    %ebx,%esi
40c019:	0f 84 47 03 00 00    	je     0x40c366
40c01f:	2b f3                	sub    %ebx,%esi
40c021:	d1 fe                	sar    $1,%esi
40c023:	46                   	inc    %esi
40c024:	8d 0c 36             	lea    (%esi,%esi,1),%ecx
40c027:	e8 a4 1c 00 00       	call   0x40dcd0
40c02c:	8b f8                	mov    %eax,%edi
40c02e:	89 7d dc             	mov    %edi,-0x24(%ebp)
40c031:	85 ff                	test   %edi,%edi
40c033:	0f 84 7d 0f 01 00    	je     0x41cfb6
40c039:	8d 46 ff             	lea    -0x1(%esi),%eax
40c03c:	85 f6                	test   %esi,%esi
40c03e:	74 61                	je     0x40c0a1
40c040:	81 fe ff ff ff 7f    	cmp    $0x7fffffff,%esi
40c046:	0f 87 8d 0f 01 00    	ja     0x41cfd9
40c04c:	3d fe ff ff 7f       	cmp    $0x7ffffffe,%eax
40c051:	0f 87 8a 0f 01 00    	ja     0x41cfe1
40c057:	8b cb                	mov    %ebx,%ecx
40c059:	8b d7                	mov    %edi,%edx
40c05b:	33 db                	xor    %ebx,%ebx
40c05d:	89 5d c0             	mov    %ebx,-0x40(%ebp)
40c060:	89 55 c4             	mov    %edx,-0x3c(%ebp)
40c063:	89 75 a4             	mov    %esi,-0x5c(%ebp)
40c066:	89 4d a8             	mov    %ecx,-0x58(%ebp)
40c069:	89 45 a0             	mov    %eax,-0x60(%ebp)
40c06c:	85 f6                	test   %esi,%esi
40c06e:	0f 84 56 0f 01 00    	je     0x41cfca
40c074:	85 c0                	test   %eax,%eax
40c076:	74 16                	je     0x40c08e
40c078:	0f b7 39             	movzwl (%ecx),%edi