40ba4e:	66 85 c0             	test   %ax,%ax
40ba51:	74 19                	je     0x40ba6c
40ba53:	66 83 79 02 3a       	cmpw   $0x3a,0x2(%ecx)
40ba58:	75 12                	jne    0x40ba6c
40ba5a:	83 f8 61             	cmp    $0x61,%eax
40ba5d:	72 08                	jb     0x40ba67
40ba5f:	83 f8 7a             	cmp    $0x7a,%eax
40ba62:	77 03                	ja     0x40ba67
40ba64:	83 e8 20             	sub    $0x20,%eax
40ba67:	83 c0 c0             	add    $0xffffffc0,%eax
40ba6a:	5d                   	pop    %ebp
40ba6b:	c3                   	ret
40ba6c:	33 c0                	xor    %eax,%eax
40ba6e:	5d                   	pop    %ebp
40ba6f:	c3                   	ret
40ba70:	8b ff                	mov    %edi,%edi
40ba72:	55                   	push   %ebp
40ba73:	8b ec                	mov    %esp,%ebp
40ba75:	81 ec 10 02 00 00    	sub    $0x210,%esp
40ba7b:	a1 0c 30 42 00       	mov    0x42300c,%eax
40ba80:	33 c5                	xor    %ebp,%eax
40ba82:	89 45 fc             	mov    %eax,-0x4(%ebp)
40ba85:	57                   	push   %edi
40ba86:	33 c0                	xor    %eax,%eax
40ba88:	33 ff                	xor    %edi,%edi
40ba8a:	68 08 02 00 00       	push   $0x208
40ba8f:	66 89 85 f0 fd ff ff 	mov    %ax,-0x210(%ebp)
40ba96:	8d 85 f2 fd ff ff    	lea    -0x20e(%ebp),%eax
40ba9c:	57                   	push   %edi
40ba9d:	50                   	push   %eax
40ba9e:	e8 bd 8f ff ff       	call   0x404a60
40baa3:	83 c4 0c             	add    $0xc,%esp
40baa6:	8d 85 f0 fd ff ff    	lea    -0x210(%ebp),%eax
40baac:	50                   	push   %eax
40baad:	68 05 01 00 00       	push   $0x105
40bab2:	ff 15 48 b1 41 00    	call   *0x41b148
40bab8:	3d 04 01 00 00       	cmp    $0x104,%eax
40babd:	77 0f                	ja     0x40bace
40babf:	8d 85 f0 fd ff ff    	lea    -0x210(%ebp),%eax
40bac5:	50                   	push   %eax
40bac6:	e8 78 ff ff ff       	call   0x40ba43
40bacb:	59                   	pop    %ecx
40bacc:	eb 42                	jmp    0x40bb10
40bace:	53                   	push   %ebx
40bacf:	56                   	push   %esi
40bad0:	8d 58 01             	lea    0x1(%eax),%ebx
40bad3:	6a 02                	push   $0x2
40bad5:	53                   	push   %ebx
40bad6:	e8 d1 dd ff ff       	call   0x4098ac
40badb:	8b f0                	mov    %eax,%esi
40badd:	59                   	pop    %ecx
40bade:	59                   	pop    %ecx
40badf:	85 f6                	test   %esi,%esi
40bae1:	74 0c                	je     0x40baef
40bae3:	56                   	push   %esi
40bae4:	53                   	push   %ebx
40bae5:	ff 15 48 b1 41 00    	call   *0x41b148
40baeb:	85 c0                	test   %eax,%eax
40baed:	75 0d                	jne    0x40bafc
40baef:	e8 13 c2 ff ff       	call   0x407d07
40baf4:	c7 00 0c 00 00 00    	movl   $0xc,(%eax)
40bafa:	eb 09                	jmp    0x40bb05
40bafc:	56                   	push   %esi
40bafd:	e8 41 ff ff ff       	call   0x40ba43
40bb02:	59                   	pop    %ecx
40bb03:	8b f8                	mov    %eax,%edi
40bb05:	56                   	push   %esi
40bb06:	e8 19 dd ff ff       	call   0x409824
40bb0b:	59                   	pop    %ecx
40bb0c:	5e                   	pop    %esi
40bb0d:	8b c7                	mov    %edi,%eax
40bb0f:	5b                   	pop    %ebx
40bb10:	8b 4d fc             	mov    -0x4(%ebp),%ecx
40bb13:	33 cd                	xor    %ebp,%ecx
40bb15:	5f                   	pop    %edi
40bb16:	e8 3b 74 ff ff       	call   0x402f56
40bb1b:	8b e5                	mov    %ebp,%esp
40bb1d:	5d                   	pop    %ebp
40bb1e:	c3                   	ret
40bb1f:	8b ff                	mov    %edi,%edi
40bb21:	55                   	push   %ebp
40bb22:	8b ec                	mov    %esp,%ebp
40bb24:	57                   	push   %edi
40bb25:	33 ff                	xor    %edi,%edi
40bb27:	57                   	push   %edi
40bb28:	57                   	push   %edi
40bb29:	57                   	push   %edi
40bb2a:	ff 75 08             	push   0x8(%ebp)
40bb2d:	ff 15 4c b1 41 00    	call   *0x41b14c
40bb33:	85 c0                	test   %eax,%eax
40bb35:	75 11                	jne    0x40bb48
40bb37:	ff 15 48 b0 41 00    	call   *0x41b048
40bb3d:	50                   	push   %eax
40bb3e:	e8 8e c1 ff ff       	call   0x407cd1
40bb43:	59                   	pop    %ecx
40bb44:	33 c0                	xor    %eax,%eax
40bb46:	eb 4a                	jmp    0x40bb92
40bb48:	53                   	push   %ebx
40bb49:	8b 5d 0c             	mov    0xc(%ebp),%ebx
40bb4c:	56                   	push   %esi
40bb4d:	3b d8                	cmp    %eax,%ebx
40bb4f:	77 02                	ja     0x40bb53
40bb51:	8b d8                	mov    %eax,%ebx
40bb53:	6a 02                	push   $0x2
40bb55:	53                   	push   %ebx
40bb56:	e8 c7 7b 00 00       	call   0x413722
40bb5b:	8b f0                	mov    %eax,%esi
40bb5d:	59                   	pop    %ecx
40bb5e:	59                   	pop    %ecx
40bb5f:	85 f6                	test   %esi,%esi
40bb61:	75 0d                	jne    0x40bb70
40bb63:	e8 9f c1 ff ff       	call   0x407d07
40bb68:	c7 00 0c 00 00 00    	movl   $0xc,(%eax)
40bb6e:	eb 17                	jmp    0x40bb87
40bb70:	53                   	push   %ebx
40bb71:	ff 75 08             	push   0x8(%ebp)
40bb74:	56                   	push   %esi
40bb75:	e8 1b 00 00 00       	call   0x40bb95
40bb7a:	83 c4 0c             	add    $0xc,%esp
40bb7d:	85 c0                	test   %eax,%eax
40bb7f:	74 06                	je     0x40bb87
40bb81:	8b ce                	mov    %esi,%ecx
40bb83:	8b f7                	mov    %edi,%esi
40bb85:	8b f9                	mov    %ecx,%edi
40bb87:	56                   	push   %esi
40bb88:	e8 d2 be ff ff       	call   0x407a5f
40bb8d:	59                   	pop    %ecx
40bb8e:	5e                   	pop    %esi
40bb8f:	8b c7                	mov    %edi,%eax
40bb91:	5b                   	pop    %ebx
40bb92:	5f                   	pop    %edi
40bb93:	5d                   	pop    %ebp
40bb94:	c3                   	ret
40bb95:	8b ff                	mov    %edi,%edi
40bb97:	55                   	push   %ebp
40bb98:	8b ec                	mov    %esp,%ebp
40bb9a:	56                   	push   %esi
40bb9b:	8b 75 10             	mov    0x10(%ebp),%esi
40bb9e:	85 f6                	test   %esi,%esi
40bba0:	75 14                	jne    0x40bbb6
40bba2:	e8 60 c1 ff ff       	call   0x407d07
40bba7:	c7 00 16 00 00 00    	movl   $0x16,(%eax)
40bbad:	e8 7c c0 ff ff       	call   0x407c2e
40bbb2:	33 c0                	xor    %eax,%eax
40bbb4:	eb 3b                	jmp    0x40bbf1
40bbb6:	83 fe ff             	cmp    $0xffffffff,%esi
40bbb9:	76 0d                	jbe    0x40bbc8
40bbbb:	e8 47 c1 ff ff       	call   0x407d07
40bbc0:	c7 00 22 00 00 00    	movl   $0x22,(%eax)
40bbc6:	eb ea                	jmp    0x40bbb2
40bbc8:	6a 00                	push   $0x0
40bbca:	ff 75 08             	push   0x8(%ebp)
40bbcd:	56                   	push   %esi
40bbce:	ff 75 0c             	push   0xc(%ebp)
40bbd1:	ff 15 4c b1 41 00    	call   *0x41b14c
40bbd7:	3b c6                	cmp    %esi,%eax
40bbd9:	73 e0                	jae    0x40bbbb
40bbdb:	85 c0                	test   %eax,%eax
40bbdd:	75 0f                	jne    0x40bbee
40bbdf:	ff 15 48 b0 41 00    	call   *0x41b048
40bbe5:	50                   	push   %eax
40bbe6:	e8 e6 c0 ff ff       	call   0x407cd1
40bbeb:	59                   	pop    %ecx
40bbec:	eb c4                	jmp    0x40bbb2
40bbee:	8b 45 08             	mov    0x8(%ebp),%eax
40bbf1:	5e                   	pop    %esi
40bbf2:	5d                   	pop    %ebp
40bbf3:	c3                   	ret
40bbf4:	8b ff                	mov    %edi,%edi
40bbf6:	55                   	push   %ebp
40bbf7:	8b ec                	mov    %esp,%ebp
40bbf9:	8b 45 0c             	mov    0xc(%ebp),%eax
40bbfc:	85 c0                	test   %eax,%eax
40bbfe:	74 2f                	je     0x40bc2f
40bc00:	33 c9                	xor    %ecx,%ecx
40bc02:	66 39 08             	cmp    %cx,(%eax)
40bc05:	74 28                	je     0x40bc2f
40bc07:	39 4d 08             	cmp    %ecx,0x8(%ebp)
40bc0a:	74 11                	je     0x40bc1d
40bc0c:	ff 75 10             	push   0x10(%ebp)
40bc0f:	50                   	push   %eax
40bc10:	ff 75 08             	push   0x8(%ebp)
40bc13:	e8 7d ff ff ff       	call   0x40bb95
40bc18:	83 c4 0c             	add    $0xc,%esp
40bc1b:	5d                   	pop    %ebp
40bc1c:	c3                   	ret
40bc1d:	51                   	push   %ecx
40bc1e:	51                   	push   %ecx
40bc1f:	6a 01                	push   $0x1
40bc21:	ff 75 10             	push   0x10(%ebp)
40bc24:	50                   	push   %eax
40bc25:	e8 f5 fe ff ff       	call   0x40bb1f
40bc2a:	83 c4 14             	add    $0x14,%esp
40bc2d:	5d                   	pop    %ebp
40bc2e:	c3                   	ret
40bc2f:	8b 45 10             	mov    0x10(%ebp),%eax
40bc32:	b9 ff ff ff 7f       	mov    $0x7fffffff,%ecx
40bc37:	3b c1                	cmp    %ecx,%eax
40bc39:	72 02                	jb     0x40bc3d
40bc3b:	8b c1                	mov    %ecx,%eax
40bc3d:	50                   	push   %eax
40bc3e:	ff 75 08             	push   0x8(%ebp)
40bc41:	e8 c0 7a 00 00       	call   0x413706
40bc46:	59                   	pop    %ecx
40bc47:	59                   	pop    %ecx
40bc48:	5d                   	pop    %ebp
40bc49:	c3                   	ret
40bc4a:	8b ff                	mov    %edi,%edi
40bc4c:	55                   	push   %ebp
40bc4d:	8b ec                	mov    %esp,%ebp
40bc4f:	8b 45 08             	mov    0x8(%ebp),%eax
40bc52:	33 c9                	xor    %ecx,%ecx
40bc54:	53                   	push   %ebx
40bc55:	56                   	push   %esi
40bc56:	57                   	push   %edi
40bc57:	66 39 08             	cmp    %cx,(%eax)
40bc5a:	74 2c                	je     0x40bc88
40bc5c:	8b 75 0c             	mov    0xc(%ebp),%esi
40bc5f:	0f b7 3e             	movzwl (%esi),%edi
40bc62:	8b ce                	mov    %esi,%ecx
40bc64:	66 85 ff             	test   %di,%di
40bc67:	74 15                	je     0x40bc7e
40bc69:	0f b7 18             	movzwl (%eax),%ebx
40bc6c:	8b d7                	mov    %edi,%edx
40bc6e:	66 3b d3             	cmp    %bx,%dx
40bc71:	74 17                	je     0x40bc8a
40bc73:	83 c1 02             	add    $0x2,%ecx
40bc76:	0f b7 11             	movzwl (%ecx),%edx
40bc79:	66 85 d2             	test   %dx,%dx
40bc7c:	75 f0                	jne    0x40bc6e
40bc7e:	83 c0 02             	add    $0x2,%eax
40bc81:	33 c9                	xor    %ecx,%ecx
40bc83:	66 39 08             	cmp    %cx,(%eax)
40bc86:	75 da                	jne    0x40bc62
40bc88:	33 c0                	xor    %eax,%eax
40bc8a:	5f                   	pop    %edi
40bc8b:	5e                   	pop    %esi
40bc8c:	5b                   	pop    %ebx
40bc8d:	5d                   	pop    %ebp
40bc8e:	c3                   	ret
40bc8f:	68 90 c9 41 00       	push   $0x41c990
40bc94:	68 88 c9 41 00       	push   $0x41c988
40bc99:	68 90 c9 41 00       	push   $0x41c990
40bc9e:	6a 01                	push   $0x1
40bca0:	e8 04 00 00 00       	call   0x40bca9
40bca5:	83 c4 10             	add    $0x10,%esp
40bca8:	c3                   	ret
40bca9:	8b ff                	mov    %edi,%edi
40bcab:	55                   	push   %ebp
40bcac:	8b ec                	mov    %esp,%ebp
40bcae:	8b 45 08             	mov    0x8(%ebp),%eax
40bcb1:	53                   	push   %ebx
40bcb2:	56                   	push   %esi
40bcb3:	57                   	push   %edi
40bcb4:	8d 1c 85 18 44 42 00 	lea    0x424418(,%eax,4),%ebx
40bcbb:	8b 03                	mov    (%ebx),%eax
40bcbd:	8b 15 0c 30 42 00    	mov    0x42300c,%edx
40bcc3:	83 cf ff             	or     $0xffffffff,%edi
40bcc6:	8b ca                	mov    %edx,%ecx
40bcc8:	8b f2                	mov    %edx,%esi
40bcca:	83 e1 1f             	and    $0x1f,%ecx
40bccd:	33 f0                	xor    %eax,%esi
40bccf:	d3 ce                	ror    %cl,%esi
40bcd1:	3b f7                	cmp    %edi,%esi
40bcd3:	74 69                	je     0x40bd3e
40bcd5:	85 f6                	test   %esi,%esi
40bcd7:	74 04                	je     0x40bcdd
40bcd9:	8b c6                	mov    %esi,%eax
40bcdb:	eb 63                	jmp    0x40bd40
40bcdd:	8b 75 10             	mov    0x10(%ebp),%esi
40bce0:	3b 75 14             	cmp    0x14(%ebp),%esi
40bce3:	74 1a                	je     0x40bcff
40bce5:	ff 36                	push   (%esi)
40bce7:	e8 59 00 00 00       	call   0x40bd45
40bcec:	59                   	pop    %ecx
40bced:	85 c0                	test   %eax,%eax
40bcef:	75 2f                	jne    0x40bd20
40bcf1:	83 c6 04             	add    $0x4,%esi
40bcf4:	3b 75 14             	cmp    0x14(%ebp),%esi
40bcf7:	75 ec                	jne    0x40bce5
40bcf9:	8b 15 0c 30 42 00    	mov    0x42300c,%edx
40bcff:	33 c0                	xor    %eax,%eax
40bd01:	85 c0                	test   %eax,%eax
40bd03:	74 29                	je     0x40bd2e
40bd05:	ff 75 0c             	push   0xc(%ebp)
40bd08:	50                   	push   %eax
40bd09:	ff 15 68 b0 41 00    	call   *0x41b068
40bd0f:	8b f0                	mov    %eax,%esi
40bd11:	85 f6                	test   %esi,%esi
40bd13:	74 13                	je     0x40bd28
40bd15:	56                   	push   %esi
40bd16:	e8 aa 75 ff ff       	call   0x4032c5
40bd1b:	59                   	pop    %ecx
40bd1c:	87 03                	xchg   %eax,(%ebx)
40bd1e:	eb b9                	jmp    0x40bcd9
40bd20:	8b 15 0c 30 42 00    	mov    0x42300c,%edx
40bd26:	eb d9                	jmp    0x40bd01
40bd28:	8b 15 0c 30 42 00    	mov    0x42300c,%edx
40bd2e:	8b c2                	mov    %edx,%eax
40bd30:	6a 20                	push   $0x20
40bd32:	83 e0 1f             	and    $0x1f,%eax
40bd35:	59                   	pop    %ecx
40bd36:	2b c8                	sub    %eax,%ecx
40bd38:	d3 cf                	ror    %cl,%edi
40bd3a:	33 fa                	xor    %edx,%edi
40bd3c:	87 3b                	xchg   %edi,(%ebx)
40bd3e:	33 c0                	xor    %eax,%eax
40bd40:	5f                   	pop    %edi
40bd41:	5e                   	pop    %esi
40bd42:	5b                   	pop    %ebx
40bd43:	5d                   	pop    %ebp
40bd44:	c3                   	ret
40bd45:	8b ff                	mov    %edi,%edi
40bd47:	55                   	push   %ebp
40bd48:	8b ec                	mov    %esp,%ebp
40bd4a:	8b 45 08             	mov    0x8(%ebp),%eax
40bd4d:	57                   	push   %edi
40bd4e:	8d 3c 85 c8 43 42 00 	lea    0x4243c8(,%eax,4),%edi
40bd55:	8b 0f                	mov    (%edi),%ecx
40bd57:	85 c9                	test   %ecx,%ecx
40bd59:	74 0b                	je     0x40bd66
40bd5b:	8d 41 01             	lea    0x1(%ecx),%eax
40bd5e:	f7 d8                	neg    %eax
40bd60:	1b c0                	sbb    %eax,%eax
40bd62:	23 c1                	and    %ecx,%eax
40bd64:	eb 57                	jmp    0x40bdbd
40bd66:	53                   	push   %ebx
40bd67:	8b 1c 85 e8 c4 41 00 	mov    0x41c4e8(,%eax,4),%ebx
40bd6e:	56                   	push   %esi
40bd6f:	68 00 08 00 00       	push   $0x800
40bd74:	6a 00                	push   $0x0
40bd76:	53                   	push   %ebx
40bd77:	ff 15 a0 b0 41 00    	call   *0x41b0a0
40bd7d:	8b f0                	mov    %eax,%esi
40bd7f:	85 f6                	test   %esi,%esi
40bd81:	75 27                	jne    0x40bdaa
40bd83:	ff 15 48 b0 41 00    	call   *0x41b048
40bd89:	83 f8 57             	cmp    $0x57,%eax
40bd8c:	75 0d                	jne    0x40bd9b
40bd8e:	56                   	push   %esi
40bd8f:	56                   	push   %esi
40bd90:	53                   	push   %ebx
40bd91:	ff 15 a0 b0 41 00    	call   *0x41b0a0
40bd97:	8b f0                	mov    %eax,%esi
40bd99:	eb 02                	jmp    0x40bd9d
40bd9b:	33 f6                	xor    %esi,%esi
40bd9d:	85 f6                	test   %esi,%esi
40bd9f:	75 09                	jne    0x40bdaa
40bda1:	83 c8 ff             	or     $0xffffffff,%eax
40bda4:	87 07                	xchg   %eax,(%edi)