40ed7a:	e8 9b 00 00 00       	call   0x40ee1a
40ed7f:	85 c0                	test   %eax,%eax
40ed81:	74 3e                	je     0x40edc1
40ed83:	39 5d 18             	cmp    %ebx,0x18(%ebp)
40ed86:	74 13                	je     0x40ed9b
40ed88:	8b 4c 24 10          	mov    0x10(%esp),%ecx
40ed8c:	ba 9c 59 40 00       	mov    $0x40599c,%edx
40ed91:	53                   	push   %ebx
40ed92:	e8 40 00 00 00       	call   0x40edd7
40ed97:	85 c0                	test   %eax,%eax
40ed99:	74 26                	je     0x40edc1
40ed9b:	39 5d 20             	cmp    %ebx,0x20(%ebp)
40ed9e:	74 13                	je     0x40edb3
40eda0:	8b 4c 24 10          	mov    0x10(%esp),%ecx
40eda4:	ba 54 59 40 00       	mov    $0x405954,%edx
40eda9:	53                   	push   %ebx
40edaa:	e8 28 00 00 00       	call   0x40edd7
40edaf:	85 c0                	test   %eax,%eax
40edb1:	74 0e                	je     0x40edc1
40edb3:	8b 4c 24 10          	mov    0x10(%esp),%ecx
40edb7:	ba 7c 59 40 00       	mov    $0x40597c,%edx
40edbc:	e8 50 08 00 00       	call   0x40f611
40edc1:	ff 74 24 10          	push   0x10(%esp)
40edc5:	ff 15 0c 30 42 00    	call   *0x42300c
40edcb:	33 c0                	xor    %eax,%eax
40edcd:	40                   	inc    %eax
40edce:	5f                   	pop    %edi
40edcf:	5e                   	pop    %esi
40edd0:	5b                   	pop    %ebx
40edd1:	8b e5                	mov    %ebp,%esp
40edd3:	5d                   	pop    %ebp
40edd4:	c2 20 00             	ret    $0x20
40edd7:	8b ff                	mov    %edi,%edi
40edd9:	55                   	push   %ebp
40edda:	8b ec                	mov    %esp,%ebp
40eddc:	53                   	push   %ebx
40eddd:	56                   	push   %esi
40edde:	6a 04                	push   $0x4
40ede0:	8d 45 08             	lea    0x8(%ebp),%eax
40ede3:	8b f2                	mov    %edx,%esi
40ede5:	50                   	push   %eax
40ede6:	6a 04                	push   $0x4
40ede8:	6a 00                	push   $0x0
40edea:	56                   	push   %esi
40edeb:	51                   	push   %ecx
40edec:	ff 15 10 30 42 00    	call   *0x423010
40edf2:	33 db                	xor    %ebx,%ebx
40edf4:	85 c0                	test   %eax,%eax
40edf6:	0f 94 c3             	sete   %bl
40edf9:	09 1d f8 09 42 00    	or     %ebx,0x4209f8
40edff:	85 c0                	test   %eax,%eax
40ee01:	74 0f                	je     0x40ee12
40ee03:	50                   	push   %eax
40ee04:	56                   	push   %esi
40ee05:	68 93 00 00 00       	push   $0x93
40ee0a:	e8 44 f8 ff ff       	call   0x40e653
40ee0f:	83 c4 0c             	add    $0xc,%esp
40ee12:	5e                   	pop    %esi
40ee13:	8b c3                	mov    %ebx,%eax
40ee15:	5b                   	pop    %ebx
40ee16:	5d                   	pop    %ebp
40ee17:	c2 04 00             	ret    $0x4
40ee1a:	8b ff                	mov    %edi,%edi
40ee1c:	55                   	push   %ebp
40ee1d:	8b ec                	mov    %esp,%ebp
40ee1f:	53                   	push   %ebx
40ee20:	56                   	push   %esi
40ee21:	8b 75 08             	mov    0x8(%ebp),%esi
40ee24:	33 db                	xor    %ebx,%ebx
40ee26:	57                   	push   %edi
40ee27:	8b fa                	mov    %edx,%edi
40ee29:	8d 56 02             	lea    0x2(%esi),%edx
40ee2c:	66 8b 06             	mov    (%esi),%ax
40ee2f:	83 c6 02             	add    $0x2,%esi
40ee32:	66 3b c3             	cmp    %bx,%ax
40ee35:	75 f5                	jne    0x40ee2c
40ee37:	2b f2                	sub    %edx,%esi
40ee39:	d1 fe                	sar    $1,%esi
40ee3b:	8d 04 75 02 00 00 00 	lea    0x2(,%esi,2),%eax
40ee42:	50                   	push   %eax
40ee43:	ff 75 08             	push   0x8(%ebp)
40ee46:	6a 01                	push   $0x1
40ee48:	53                   	push   %ebx
40ee49:	57                   	push   %edi
40ee4a:	51                   	push   %ecx
40ee4b:	ff 15 10 30 42 00    	call   *0x423010
40ee51:	33 db                	xor    %ebx,%ebx
40ee53:	85 c0                	test   %eax,%eax
40ee55:	0f 94 c3             	sete   %bl
40ee58:	09 1d f8 09 42 00    	or     %ebx,0x4209f8
40ee5e:	85 c0                	test   %eax,%eax
40ee60:	74 0f                	je     0x40ee71
40ee62:	50                   	push   %eax
40ee63:	57                   	push   %edi
40ee64:	68 93 00 00 00       	push   $0x93
40ee69:	e8 e5 f7 ff ff       	call   0x40e653
40ee6e:	83 c4 0c             	add    $0xc,%esp
40ee71:	5f                   	pop    %edi
40ee72:	5e                   	pop    %esi
40ee73:	8b c3                	mov    %ebx,%eax
40ee75:	5b                   	pop    %ebx
40ee76:	5d                   	pop    %ebp
40ee77:	c2 04 00             	ret    $0x4
40ee7a:	8b ff                	mov    %edi,%edi
40ee7c:	55                   	push   %ebp
40ee7d:	8b ec                	mov    %esp,%ebp
40ee7f:	51                   	push   %ecx
40ee80:	83 65 fc 00          	andl   $0x0,-0x4(%ebp)
40ee84:	8d 45 fc             	lea    -0x4(%ebp),%eax
40ee87:	53                   	push   %ebx
40ee88:	56                   	push   %esi
40ee89:	57                   	push   %edi
40ee8a:	50                   	push   %eax
40ee8b:	6a 01                	push   $0x1
40ee8d:	6a 00                	push   $0x0
40ee8f:	bb 50 5a 40 00       	mov    $0x405a50,%ebx
40ee94:	8b f2                	mov    %edx,%esi
40ee96:	53                   	push   %ebx
40ee97:	68 02 00 00 80       	push   $0x80000002
40ee9c:	8b f9                	mov    %ecx,%edi
40ee9e:	ff 15 08 30 42 00    	call   *0x423008
40eea4:	85 c0                	test   %eax,%eax
40eea6:	74 23                	je     0x40eecb
40eea8:	83 f8 05             	cmp    $0x5,%eax
40eeab:	75 0d                	jne    0x40eeba
40eead:	68 91 00 00 00       	push   $0x91
40eeb2:	e8 9c f7 ff ff       	call   0x40e653
40eeb7:	59                   	pop    %ecx
40eeb8:	eb 4e                	jmp    0x40ef08
40eeba:	50                   	push   %eax
40eebb:	53                   	push   %ebx
40eebc:	68 92 00 00 00       	push   $0x92
40eec1:	e8 8d f7 ff ff       	call   0x40e653
40eec6:	83 c4 0c             	add    $0xc,%esp
40eec9:	eb 3d                	jmp    0x40ef08
40eecb:	8b 4d fc             	mov    -0x4(%ebp),%ecx
40eece:	ba 2c 5a 40 00       	mov    $0x405a2c,%edx
40eed3:	56                   	push   %esi
40eed4:	e8 69 04 00 00       	call   0x40f342
40eed9:	85 c0                	test   %eax,%eax
40eedb:	74 22                	je     0x40eeff
40eedd:	ff 75 08             	push   0x8(%ebp)
40eee0:	8b 4d fc             	mov    -0x4(%ebp),%ecx
40eee3:	ba c4 59 40 00       	mov    $0x4059c4,%edx
40eee8:	e8 55 04 00 00       	call   0x40f342
40eeed:	85 c0                	test   %eax,%eax
40eeef:	74 0e                	je     0x40eeff
40eef1:	8b 4d fc             	mov    -0x4(%ebp),%ecx
40eef4:	ba e4 59 40 00       	mov    $0x4059e4,%edx
40eef9:	57                   	push   %edi
40eefa:	e8 a1 04 00 00       	call   0x40f3a0
40eeff:	ff 75 fc             	push   -0x4(%ebp)
40ef02:	ff 15 0c 30 42 00    	call   *0x42300c
40ef08:	5f                   	pop    %edi
40ef09:	33 c0                	xor    %eax,%eax
40ef0b:	5e                   	pop    %esi
40ef0c:	40                   	inc    %eax
40ef0d:	5b                   	pop    %ebx
40ef0e:	c9                   	leave
40ef0f:	c2 04 00             	ret    $0x4
40ef12:	6a 10                	push   $0x10
40ef14:	b8 9e d2 41 00       	mov    $0x41d29e,%eax
40ef19:	e8 1a d5 00 00       	call   0x41c438
40ef1e:	8b da                	mov    %edx,%ebx
40ef20:	89 5d ec             	mov    %ebx,-0x14(%ebp)
40ef23:	8b f9                	mov    %ecx,%edi
40ef25:	8d 4d f0             	lea    -0x10(%ebp),%ecx
40ef28:	ff 15 40 32 42 00    	call   *0x423240
40ef2e:	83 65 fc 00          	andl   $0x0,-0x4(%ebp)
40ef32:	8b cb                	mov    %ebx,%ecx
40ef34:	6a ff                	push   $0xffffffff
40ef36:	6a 00                	push   $0x0
40ef38:	ff 15 f4 33 42 00    	call   *0x4233f4
40ef3e:	8b 75 08             	mov    0x8(%ebp),%esi
40ef41:	33 c9                	xor    %ecx,%ecx
40ef43:	8b 45 0c             	mov    0xc(%ebp),%eax
40ef46:	8b d6                	mov    %esi,%edx
40ef48:	50                   	push   %eax
40ef49:	89 0e                	mov    %ecx,(%esi)
40ef4b:	89 08                	mov    %ecx,(%eax)
40ef4d:	89 0f                	mov    %ecx,(%edi)
40ef4f:	8d 4d f0             	lea    -0x10(%ebp),%ecx
40ef52:	e8 23 ff ff ff       	call   0x40ee7a
40ef57:	8d 4d f0             	lea    -0x10(%ebp),%ecx
40ef5a:	89 45 e8             	mov    %eax,-0x18(%ebp)
40ef5d:	ff 15 0c 34 42 00    	call   *0x42340c
40ef63:	8d 4d f0             	lea    -0x10(%ebp),%ecx
40ef66:	ff 15 10 34 42 00    	call   *0x423410
40ef6c:	68 e0 43 40 00       	push   $0x4043e0
40ef71:	ff 75 f0             	push   -0x10(%ebp)
40ef74:	ff 15 64 35 42 00    	call   *0x423564
40ef7a:	59                   	pop    %ecx
40ef7b:	59                   	pop    %ecx
40ef7c:	85 c0                	test   %eax,%eax
40ef7e:	75 07                	jne    0x40ef87
40ef80:	33 db                	xor    %ebx,%ebx
40ef82:	43                   	inc    %ebx
40ef83:	89 1f                	mov    %ebx,(%edi)
40ef85:	eb 22                	jmp    0x40efa9
40ef87:	51                   	push   %ecx
40ef88:	8d 45 f0             	lea    -0x10(%ebp),%eax
40ef8b:	89 65 e4             	mov    %esp,-0x1c(%ebp)
40ef8e:	8b cc                	mov    %esp,%ecx
40ef90:	50                   	push   %eax
40ef91:	ff 15 f0 33 42 00    	call   *0x4233f0
40ef97:	33 db                	xor    %ebx,%ebx
40ef99:	43                   	inc    %ebx
40ef9a:	88 5d fc             	mov    %bl,-0x4(%ebp)
40ef9d:	c6 45 fc 00          	movb   $0x0,-0x4(%ebp)
40efa1:	8b 4d ec             	mov    -0x14(%ebp),%ecx
40efa4:	e8 30 00 00 00       	call   0x40efd9
40efa9:	83 7d e8 00          	cmpl   $0x0,-0x18(%ebp)
40efad:	74 0e                	je     0x40efbd
40efaf:	ff 36                	push   (%esi)
40efb1:	8b 4d 10             	mov    0x10(%ebp),%ecx
40efb4:	e8 0e 5c 00 00       	call   0x414bc7
40efb9:	85 c0                	test   %eax,%eax
40efbb:	75 02                	jne    0x40efbf
40efbd:	33 db                	xor    %ebx,%ebx
40efbf:	83 4d fc ff          	orl    $0xffffffff,-0x4(%ebp)
40efc3:	8d 4d f0             	lea    -0x10(%ebp),%ecx
40efc6:	ff 15 44 32 42 00    	call   *0x423244
40efcc:	8b c3                	mov    %ebx,%eax
40efce:	e8 33 d4 00 00       	call   0x41c406
40efd3:	c2 0c 00             	ret    $0xc
40efd6:	cc                   	int3
40efd7:	cc                   	int3
40efd8:	cc                   	int3
40efd9:	6a 20                	push   $0x20
40efdb:	b8 01 d3 41 00       	mov    $0x41d301,%eax
40efe0:	e8 53 d4 00 00       	call   0x41c438
40efe5:	8b d9                	mov    %ecx,%ebx
40efe7:	83 65 fc 00          	andl   $0x0,-0x4(%ebp)
40efeb:	8d 4d f0             	lea    -0x10(%ebp),%ecx
40efee:	ff 15 40 32 42 00    	call   *0x423240
40eff4:	c6 45 fc 01          	movb   $0x1,-0x4(%ebp)
40eff8:	8b cb                	mov    %ebx,%ecx
40effa:	6a ff                	push   $0xffffffff
40effc:	6a 00                	push   $0x0
40effe:	ff 15 f4 33 42 00    	call   *0x4233f4
40f004:	8d 4d 08             	lea    0x8(%ebp),%ecx
40f007:	ff 15 10 34 42 00    	call   *0x423410
40f00d:	8d 4d 08             	lea    0x8(%ebp),%ecx
40f010:	ff 15 0c 34 42 00    	call   *0x42340c
40f016:	8b 45 08             	mov    0x8(%ebp),%eax
40f019:	8b 48 f8             	mov    -0x8(%eax),%ecx
40f01c:	8b f1                	mov    %ecx,%esi
40f01e:	85 f6                	test   %esi,%esi
40f020:	0f 84 c3 01 00 00    	je     0x40f1e9
40f026:	6a 22                	push   $0x22
40f028:	5f                   	pop    %edi
40f029:	85 c9                	test   %ecx,%ecx
40f02b:	7e 05                	jle    0x40f032
40f02d:	0f b7 00             	movzwl (%eax),%eax
40f030:	eb 02                	jmp    0x40f034
40f032:	33 c0                	xor    %eax,%eax
40f034:	66 3b c7             	cmp    %di,%ax
40f037:	0f 85 a8 00 00 00    	jne    0x40f0e5
40f03d:	83 fe 01             	cmp    $0x1,%esi
40f040:	0f 84 a3 01 00 00    	je     0x40f1e9
40f046:	4e                   	dec    %esi
40f047:	8d 45 ec             	lea    -0x14(%ebp),%eax
40f04a:	56                   	push   %esi
40f04b:	50                   	push   %eax
40f04c:	8d 4d 08             	lea    0x8(%ebp),%ecx
40f04f:	ff 15 38 31 42 00    	call   *0x423138
40f055:	c6 45 fc 02          	movb   $0x2,-0x4(%ebp)
40f059:	8d 4d 08             	lea    0x8(%ebp),%ecx
40f05c:	50                   	push   %eax
40f05d:	ff 15 80 33 42 00    	call   *0x423380
40f063:	c6 45 fc 01          	movb   $0x1,-0x4(%ebp)
40f067:	8d 4d ec             	lea    -0x14(%ebp),%ecx
40f06a:	ff 15 44 32 42 00    	call   *0x423244
40f070:	57                   	push   %edi
40f071:	8d 4d 08             	lea    0x8(%ebp),%ecx
40f074:	ff 15 e0 33 42 00    	call   *0x4233e0
40f07a:	8b f8                	mov    %eax,%edi
40f07c:	85 ff                	test   %edi,%edi
40f07e:	0f 88 65 01 00 00    	js     0x40f1e9
40f084:	7e 2b                	jle    0x40f0b1
40f086:	57                   	push   %edi
40f087:	8d 45 e8             	lea    -0x18(%ebp),%eax
40f08a:	50                   	push   %eax
40f08b:	8d 4d 08             	lea    0x8(%ebp),%ecx
40f08e:	ff 15 68 31 42 00    	call   *0x423168
40f094:	c6 45 fc 03          	movb   $0x3,-0x4(%ebp)
40f098:	8d 4d f0             	lea    -0x10(%ebp),%ecx
40f09b:	50                   	push   %eax
40f09c:	ff 15 80 33 42 00    	call   *0x423380
40f0a2:	c6 45 fc 01          	movb   $0x1,-0x4(%ebp)
40f0a6:	8d 4d e8             	lea    -0x18(%ebp),%ecx
40f0a9:	ff 15 44 32 42 00    	call   *0x423244
40f0af:	eb 09                	jmp    0x40f0ba
40f0b1:	8d 4d f0             	lea    -0x10(%ebp),%ecx
40f0b4:	ff 15 f8 33 42 00    	call   *0x4233f8
40f0ba:	2b f7                	sub    %edi,%esi
40f0bc:	8d 45 e4             	lea    -0x1c(%ebp),%eax
40f0bf:	4e                   	dec    %esi
40f0c0:	8d 4d 08             	lea    0x8(%ebp),%ecx
40f0c3:	56                   	push   %esi
40f0c4:	50                   	push   %eax
40f0c5:	ff 15 38 31 42 00    	call   *0x423138
40f0cb:	c6 45 fc 04          	movb   $0x4,-0x4(%ebp)
40f0cf:	8d 4d 08             	lea    0x8(%ebp),%ecx
40f0d2:	50                   	push   %eax
40f0d3:	ff 15 80 33 42 00    	call   *0x423380
40f0d9:	c6 45 fc 01          	movb   $0x1,-0x4(%ebp)
40f0dd:	8d 4d e4             	lea    -0x1c(%ebp),%ecx
40f0e0:	e9 89 00 00 00       	jmp    0x40f16e
40f0e5:	6a 20                	push   $0x20
40f0e7:	8d 4d 08             	lea    0x8(%ebp),%ecx
40f0ea:	ff 15 e0 33 42 00    	call   *0x4233e0
40f0f0:	8b f8                	mov    %eax,%edi
40f0f2:	85 ff                	test   %edi,%edi
40f0f4:	79 29                	jns    0x40f11f
40f0f6:	6a 09                	push   $0x9
40f0f8:	8d 4d 08             	lea    0x8(%ebp),%ecx
40f0fb:	ff 15 e0 33 42 00    	call   *0x4233e0
40f101:	8b f8                	mov    %eax,%edi
40f103:	85 ff                	test   %edi,%edi
40f105:	79 18                	jns    0x40f11f
40f107:	8d 45 08             	lea    0x8(%ebp),%eax
40f10a:	50                   	push   %eax
40f10b:	8d 4d f0             	lea    -0x10(%ebp),%ecx
40f10e:	ff 15 80 33 42 00    	call   *0x423380
40f114:	8d 4d 08             	lea    0x8(%ebp),%ecx
40f117:	ff 15 f8 33 42 00    	call   *0x4233f8
40f11d:	eb 55                	jmp    0x40f174
40f11f:	57                   	push   %edi
40f120:	8d 45 e0             	lea    -0x20(%ebp),%eax
40f123:	50                   	push   %eax
40f124:	8d 4d 08             	lea    0x8(%ebp),%ecx
40f127:	ff 15 68 31 42 00    	call   *0x423168
40f12d:	c6 45 fc 05          	movb   $0x5,-0x4(%ebp)
40f131:	8d 4d f0             	lea    -0x10(%ebp),%ecx
40f134:	50                   	push   %eax
40f135:	ff 15 80 33 42 00    	call   *0x423380
40f13b:	c6 45 fc 01          	movb   $0x1,-0x4(%ebp)
40f13f:	8d 4d e0             	lea    -0x20(%ebp),%ecx
40f142:	ff 15 44 32 42 00    	call   *0x423244
40f148:	2b f7                	sub    %edi,%esi
40f14a:	8d 45 dc             	lea    -0x24(%ebp),%eax
40f14d:	4e                   	dec    %esi
40f14e:	8d 4d 08             	lea    0x8(%ebp),%ecx
40f151:	56                   	push   %esi
40f152:	50                   	push   %eax
40f153:	ff 15 38 31 42 00    	call   *0x423138
40f159:	c6 45 fc 06          	movb   $0x6,-0x4(%ebp)
40f15d:	8d 4d 08             	lea    0x8(%ebp),%ecx
40f160:	50                   	push   %eax