40de9f:	8b 46 04             	mov    0x4(%esi),%eax
40dea2:	75 4d                	jne    0x40def1
40dea4:	8b 4d 0c             	mov    0xc(%ebp),%ecx
40dea7:	8b 09                	mov    (%ecx),%ecx
40dea9:	3b 48 04             	cmp    0x4(%eax),%ecx
40deac:	7e 52                	jle    0x40df00
40deae:	80 7e 09 00          	cmpb   $0x0,0x9(%esi)
40deb2:	8b 46 04             	mov    0x4(%esi),%eax
40deb5:	75 3f                	jne    0x40def6
40deb7:	3b 48 08             	cmp    0x8(%eax),%ecx
40deba:	7f 44                	jg     0x40df00
40debc:	8b 46 04             	mov    0x4(%esi),%eax
40debf:	42                   	inc    %edx
40dec0:	80 7e 09 00          	cmpb   $0x0,0x9(%esi)
40dec4:	89 55 08             	mov    %edx,0x8(%ebp)
40dec7:	75 32                	jne    0x40defb
40dec9:	8b 4d 0c             	mov    0xc(%ebp),%ecx
40decc:	8b 40 08             	mov    0x8(%eax),%eax
40decf:	89 01                	mov    %eax,(%ecx)
40ded1:	3b d7                	cmp    %edi,%edx
40ded3:	0f 85 41 5b 03 00    	jne    0x443a1a
40ded9:	5f                   	pop    %edi
40deda:	5e                   	pop    %esi
40dedb:	5b                   	pop    %ebx
40dedc:	8b e5                	mov    %ebp,%esp
40dede:	5d                   	pop    %ebp
40dedf:	c2 08 00             	ret    $0x8
40dee2:	8b 40 30             	mov    0x30(%eax),%eax
40dee5:	eb 8f                	jmp    0x40de76
40dee7:	8b 40 30             	mov    0x30(%eax),%eax
40deea:	eb 98                	jmp    0x40de84
40deec:	8b 40 30             	mov    0x30(%eax),%eax
40deef:	eb a1                	jmp    0x40de92
40def1:	8b 40 30             	mov    0x30(%eax),%eax
40def4:	eb ae                	jmp    0x40dea4
40def6:	8b 40 30             	mov    0x30(%eax),%eax
40def9:	eb bc                	jmp    0x40deb7
40defb:	8b 40 30             	mov    0x30(%eax),%eax
40defe:	eb c9                	jmp    0x40dec9
40df00:	6a ff                	push   $0xffffffff
40df02:	68 8f 00 00 00       	push   $0x8f
40df07:	e9 2c 5b 03 00       	jmp    0x443a38
40df0c:	55                   	push   %ebp
40df0d:	8b ec                	mov    %esp,%ebp
40df0f:	83 ec 0c             	sub    $0xc,%esp
40df12:	56                   	push   %esi
40df13:	8b f1                	mov    %ecx,%esi
40df15:	57                   	push   %edi
40df16:	8d be 5c 01 00 00    	lea    0x15c(%esi),%edi
40df1c:	8b cf                	mov    %edi,%ecx
40df1e:	e8 f5 1e 01 00       	call   0x41fe18
40df23:	ff 70 04             	push   0x4(%eax)
40df26:	e8 9d 92 ff ff       	call   0x4071c8
40df2b:	8d 4d ff             	lea    -0x1(%ebp),%ecx
40df2e:	c7 45 f8 01 00 00 00 	movl   $0x1,-0x8(%ebp)
40df35:	51                   	push   %ecx
40df36:	8d 4d f8             	lea    -0x8(%ebp),%ecx
40df39:	51                   	push   %ecx
40df3a:	50                   	push   %eax
40df3b:	8b ce                	mov    %esi,%ecx
40df3d:	e8 29 c0 ff ff       	call   0x409f6b
40df42:	85 c0                	test   %eax,%eax
40df44:	78 16                	js     0x40df5c
40df46:	80 7d ff 00          	cmpb   $0x0,-0x1(%ebp)
40df4a:	8b cf                	mov    %edi,%ecx
40df4c:	74 16                	je     0x40df64
40df4e:	e8 c5 1e 01 00       	call   0x41fe18
40df53:	8b 48 04             	mov    0x4(%eax),%ecx
40df56:	8b 45 08             	mov    0x8(%ebp),%eax
40df59:	41                   	inc    %ecx
40df5a:	89 08                	mov    %ecx,(%eax)
40df5c:	5f                   	pop    %edi
40df5d:	5e                   	pop    %esi
40df5e:	8b e5                	mov    %ebp,%esp
40df60:	5d                   	pop    %ebp
40df61:	c2 04 00             	ret    $0x4
40df64:	e8 66 1e 01 00       	call   0x41fdcf
40df69:	eb f1                	jmp    0x40df5c
40df6b:	55                   	push   %ebp
40df6c:	8b ec                	mov    %esp,%ebp
40df6e:	83 ec 44             	sub    $0x44,%esp
40df71:	53                   	push   %ebx
40df72:	56                   	push   %esi
40df73:	8b d9                	mov    %ecx,%ebx
40df75:	c7 45 f8 01 00 00 00 	movl   $0x1,-0x8(%ebp)
40df7c:	57                   	push   %edi
40df7d:	8d 4d c0             	lea    -0x40(%ebp),%ecx
40df80:	89 5d f4             	mov    %ebx,-0xc(%ebp)
40df83:	e8 24 1f 01 00       	call   0x41feac
40df88:	8b 75 08             	mov    0x8(%ebp),%esi
40df8b:	8d 45 ff             	lea    -0x1(%ebp),%eax
40df8e:	50                   	push   %eax
40df8f:	8d 45 f8             	lea    -0x8(%ebp),%eax
40df92:	c7 45 c0 01 00 00 00 	movl   $0x1,-0x40(%ebp)
40df99:	50                   	push   %eax
40df9a:	56                   	push   %esi
40df9b:	8b cb                	mov    %ebx,%ecx
40df9d:	e8 c9 bf ff ff       	call   0x409f6b
40dfa2:	85 c0                	test   %eax,%eax
40dfa4:	0f 88 87 00 00 00    	js     0x40e031
40dfaa:	8b 4e 04             	mov    0x4(%esi),%ecx
40dfad:	8b 45 f8             	mov    -0x8(%ebp),%eax
40dfb0:	8b 04 81             	mov    (%ecx,%eax,4),%eax
40dfb3:	66 83 78 08 7f       	cmpw   $0x7f,0x8(%eax)
40dfb8:	0f 85 86 5a 03 00    	jne    0x443a44
40dfbe:	8b 55 0c             	mov    0xc(%ebp),%edx
40dfc1:	8b 7d c8             	mov    -0x38(%ebp),%edi
40dfc4:	8b 32                	mov    (%edx),%esi
40dfc6:	4e                   	dec    %esi
40dfc7:	33 c0                	xor    %eax,%eax
40dfc9:	89 75 0c             	mov    %esi,0xc(%ebp)
40dfcc:	8b c8                	mov    %eax,%ecx
40dfce:	89 75 c4             	mov    %esi,-0x3c(%ebp)
40dfd1:	8a d8                	mov    %al,%bl
40dfd3:	8b 02                	mov    (%edx),%eax
40dfd5:	50                   	push   %eax
40dfd6:	8d 70 01             	lea    0x1(%eax),%esi
40dfd9:	89 75 08             	mov    %esi,0x8(%ebp)
40dfdc:	89 32                	mov    %esi,(%edx)
40dfde:	e8 e5 91 ff ff       	call   0x4071c8
40dfe3:	85 c0                	test   %eax,%eax
40dfe5:	74 27                	je     0x40e00e
40dfe7:	84 db                	test   %bl,%bl
40dfe9:	75 23                	jne    0x40e00e
40dfeb:	8b 40 04             	mov    0x4(%eax),%eax
40dfee:	33 f6                	xor    %esi,%esi
40dff0:	8b 00                	mov    (%eax),%eax
40dff2:	66 39 70 08          	cmp    %si,0x8(%eax)
40dff6:	75 db                	jne    0x40dfd3
40dff8:	8b 00                	mov    (%eax),%eax
40dffa:	83 e8 09             	sub    $0x9,%eax
40dffd:	74 4e                	je     0x40e04d
40dfff:	48                   	dec    %eax
40e000:	75 d1                	jne    0x40dfd3
40e002:	85 c9                	test   %ecx,%ecx
40e004:	75 44                	jne    0x40e04a
40e006:	8b 7d 08             	mov    0x8(%ebp),%edi
40e009:	fe c3                	inc    %bl
40e00b:	4f                   	dec    %edi
40e00c:	eb c5                	jmp    0x40dfd3
40e00e:	80 7d ff 00          	cmpb   $0x0,-0x1(%ebp)
40e012:	8b 75 0c             	mov    0xc(%ebp),%esi
40e015:	8b 5d f4             	mov    -0xc(%ebp),%ebx
40e018:	89 7d c8             	mov    %edi,-0x38(%ebp)
40e01b:	74 33                	je     0x40e050
40e01d:	8d 46 01             	lea    0x1(%esi),%eax
40e020:	89 02                	mov    %eax,(%edx)
40e022:	8d 8b 5c 01 00 00    	lea    0x15c(%ebx),%ecx
40e028:	8d 45 c0             	lea    -0x40(%ebp),%eax
40e02b:	50                   	push   %eax
40e02c:	e8 f5 1d 01 00       	call   0x41fe26
40e031:	8d 4d e0             	lea    -0x20(%ebp),%ecx
40e034:	e8 e7 b9 ff ff       	call   0x409a20
40e039:	8d 4d d0             	lea    -0x30(%ebp),%ecx
40e03c:	e8 df b9 ff ff       	call   0x409a20
40e041:	5f                   	pop    %edi
40e042:	5e                   	pop    %esi
40e043:	5b                   	pop    %ebx
40e044:	8b e5                	mov    %ebp,%esp
40e046:	5d                   	pop    %ebp
40e047:	c2 08 00             	ret    $0x8
40e04a:	49                   	dec    %ecx
40e04b:	eb 86                	jmp    0x40dfd3
40e04d:	41                   	inc    %ecx
40e04e:	eb 83                	jmp    0x40dfd3
40e050:	8d 47 01             	lea    0x1(%edi),%eax
40e053:	89 02                	mov    %eax,(%edx)
40e055:	eb da                	jmp    0x40e031
40e057:	cc                   	int3
40e058:	cc                   	int3
40e059:	cc                   	int3
40e05a:	cc                   	int3
40e05b:	cc                   	int3
40e05c:	cc                   	int3
40e05d:	cc                   	int3
40e05e:	cc                   	int3
40e05f:	cc                   	int3
40e060:	55                   	push   %ebp
40e061:	8b ec                	mov    %esp,%ebp
40e063:	83 ec 54             	sub    $0x54,%esp
40e066:	53                   	push   %ebx
40e067:	56                   	push   %esi
40e068:	8b 75 08             	mov    0x8(%ebp),%esi
40e06b:	8b c1                	mov    %ecx,%eax
40e06d:	57                   	push   %edi
40e06e:	6a ff                	push   $0xffffffff
40e070:	8d 4d e0             	lea    -0x20(%ebp),%ecx
40e073:	89 45 f4             	mov    %eax,-0xc(%ebp)
40e076:	51                   	push   %ecx
40e077:	8d 4d f0             	lea    -0x10(%ebp),%ecx
40e07a:	c7 45 f0 01 00 00 00 	movl   $0x1,-0x10(%ebp)
40e081:	51                   	push   %ecx
40e082:	56                   	push   %esi
40e083:	8b c8                	mov    %eax,%ecx
40e085:	c7 45 e0 00 00 00 00 	movl   $0x0,-0x20(%ebp)
40e08c:	c7 45 e8 00 00 00 00 	movl   $0x0,-0x18(%ebp)
40e093:	c7 45 ec 01 00 00 00 	movl   $0x1,-0x14(%ebp)
40e09a:	e8 61 bf ff ff       	call   0x40a000
40e09f:	85 c0                	test   %eax,%eax
40e0a1:	0f 88 b0 59 03 00    	js     0x443a57
40e0a7:	8b 4d ec             	mov    -0x14(%ebp),%ecx
40e0aa:	8b 45 e0             	mov    -0x20(%ebp),%eax
40e0ad:	8b 55 e8             	mov    -0x18(%ebp),%edx
40e0b0:	89 45 f8             	mov    %eax,-0x8(%ebp)
40e0b3:	83 f9 09             	cmp    $0x9,%ecx
40e0b6:	75 54                	jne    0x40e10c
40e0b8:	84 c0                	test   %al,%al
40e0ba:	75 63                	jne    0x40e11f
40e0bc:	32 db                	xor    %bl,%bl
40e0be:	88 5d ff             	mov    %bl,-0x1(%ebp)
40e0c1:	85 d2                	test   %edx,%edx
40e0c3:	0f 85 e3 59 03 00    	jne    0x443aac
40e0c9:	83 f9 09             	cmp    $0x9,%ecx
40e0cc:	0f 85 e6 03 00 00    	jne    0x40e4b8
40e0d2:	8b 56 04             	mov    0x4(%esi),%edx
40e0d5:	8b 7d f0             	mov    -0x10(%ebp),%edi
40e0d8:	8b 04 ba             	mov    (%edx,%edi,4),%eax
40e0db:	66 83 78 08 00       	cmpw   $0x0,0x8(%eax)
40e0e0:	0f 85 3c 5c 03 00    	jne    0x443d22
40e0e6:	83 38 05             	cmpl   $0x5,(%eax)
40e0e9:	0f 85 33 5c 03 00    	jne    0x443d22
40e0ef:	8b 44 ba 04          	mov    0x4(%edx,%edi,4),%eax
40e0f3:	47                   	inc    %edi
40e0f4:	66 83 78 08 7f       	cmpw   $0x7f,0x8(%eax)
40e0f9:	0f 84 41 02 00 00    	je     0x40e340
40e0ff:	84 db                	test   %bl,%bl
40e101:	75 20                	jne    0x40e123
40e103:	5f                   	pop    %edi
40e104:	5e                   	pop    %esi
40e105:	5b                   	pop    %ebx
40e106:	8b e5                	mov    %ebp,%esp
40e108:	5d                   	pop    %ebp
40e109:	c2 08 00             	ret    $0x8
40e10c:	8d 79 ff             	lea    -0x1(%ecx),%edi
40e10f:	83 ff 0a             	cmp    $0xa,%edi
40e112:	77 a8                	ja     0x40e0bc
40e114:	ff 24 bd 48 e5 40 00 	jmp    *0x40e548(,%edi,4)
40e11b:	85 c0                	test   %eax,%eax
40e11d:	74 9d                	je     0x40e0bc
40e11f:	b3 01                	mov    $0x1,%bl
40e121:	eb 9b                	jmp    0x40e0be
40e123:	33 c9                	xor    %ecx,%ecx
40e125:	c7 45 e0 78 fb 48 00 	movl   $0x48fb78,-0x20(%ebp)
40e12c:	33 f6                	xor    %esi,%esi
40e12e:	c7 45 e4 00 00 00 00 	movl   $0x0,-0x1c(%ebp)
40e135:	89 4d e8             	mov    %ecx,-0x18(%ebp)
40e138:	89 75 ec             	mov    %esi,-0x14(%ebp)
40e13b:	eb 03                	jmp    0x40e140
40e13d:	8d 49 00             	lea    0x0(%ecx),%ecx
40e140:	8b 1c ba             	mov    (%edx,%edi,4),%ebx
40e143:	8d 7f 01             	lea    0x1(%edi),%edi
40e146:	3b ce                	cmp    %esi,%ecx
40e148:	0f 84 a7 00 00 00    	je     0x40e1f5
40e14e:	6a 0c                	push   $0xc
40e150:	e8 a1 2e 01 00       	call   0x420ff6
40e155:	8b f0                	mov    %eax,%esi
40e157:	83 c4 04             	add    $0x4,%esp
40e15a:	85 f6                	test   %esi,%esi
40e15c:	0f 84 bf 03 00 00    	je     0x40e521
40e162:	0f b7 4b 08          	movzwl 0x8(%ebx),%ecx
40e166:	66 89 4e 08          	mov    %cx,0x8(%esi)
40e16a:	0f b7 46 08          	movzwl 0x8(%esi),%eax
40e16e:	0f b7 4b 0a          	movzwl 0xa(%ebx),%ecx
40e172:	66 89 4e 0a          	mov    %cx,0xa(%esi)
40e176:	66 83 f8 3f          	cmp    $0x3f,%ax
40e17a:	7e 41                	jle    0x40e1bd
40e17c:	66 83 f8 10          	cmp    $0x10,%ax
40e180:	0f 84 d9 59 03 00    	je     0x443b5f
40e186:	66 83 f8 20          	cmp    $0x20,%ax
40e18a:	0f 84 88 03 00 00    	je     0x40e518
40e190:	8b 03                	mov    (%ebx),%eax
40e192:	89 06                	mov    %eax,(%esi)
40e194:	8b 4d e8             	mov    -0x18(%ebp),%ecx
40e197:	8b 45 e4             	mov    -0x1c(%ebp),%eax
40e19a:	8b 5d 08             	mov    0x8(%ebp),%ebx
40e19d:	89 34 88             	mov    %esi,(%eax,%ecx,4)
40e1a0:	8b 4d e8             	mov    -0x18(%ebp),%ecx
40e1a3:	8b 53 04             	mov    0x4(%ebx),%edx
40e1a6:	41                   	inc    %ecx
40e1a7:	89 4d e8             	mov    %ecx,-0x18(%ebp)
40e1aa:	8b 04 ba             	mov    (%edx,%edi,4),%eax
40e1ad:	66 83 78 08 7f       	cmpw   $0x7f,0x8(%eax)
40e1b2:	0f 84 97 00 00 00    	je     0x40e24f
40e1b8:	8b 75 ec             	mov    -0x14(%ebp),%esi
40e1bb:	eb 83                	jmp    0x40e140
40e1bd:	66 83 f8 30          	cmp    $0x30,%ax
40e1c1:	7c b9                	jl     0x40e17c
40e1c3:	6a 10                	push   $0x10
40e1c5:	e8 2c 2e 01 00       	call   0x420ff6
40e1ca:	8b d0                	mov    %eax,%edx
40e1cc:	83 c4 04             	add    $0x4,%esp
40e1cf:	85 d2                	test   %edx,%edx
40e1d1:	0f 84 3a 03 00 00    	je     0x40e511
40e1d7:	8b 03                	mov    (%ebx),%eax
40e1d9:	8b 08                	mov    (%eax),%ecx
40e1db:	89 0a                	mov    %ecx,(%edx)
40e1dd:	8b 48 04             	mov    0x4(%eax),%ecx
40e1e0:	89 4a 04             	mov    %ecx,0x4(%edx)
40e1e3:	8b 48 08             	mov    0x8(%eax),%ecx
40e1e6:	89 4a 08             	mov    %ecx,0x8(%edx)
40e1e9:	8b 40 0c             	mov    0xc(%eax),%eax
40e1ec:	89 42 0c             	mov    %eax,0xc(%edx)
40e1ef:	ff 00                	incl   (%eax)
40e1f1:	89 16                	mov    %edx,(%esi)
40e1f3:	eb 9f                	jmp    0x40e194
40e1f5:	8d 04 36             	lea    (%esi,%esi,1),%eax
40e1f8:	83 f8 08             	cmp    $0x8,%eax
40e1fb:	73 05                	jae    0x40e202
40e1fd:	b8 08 00 00 00       	mov    $0x8,%eax
40e202:	33 c9                	xor    %ecx,%ecx
40e204:	89 45 ec             	mov    %eax,-0x14(%ebp)
40e207:	ba 04 00 00 00       	mov    $0x4,%edx
40e20c:	f7 e2                	mul    %edx
40e20e:	0f 90 c1             	seto   %cl
40e211:	f7 d9                	neg    %ecx
40e213:	0b c8                	or     %eax,%ecx
40e215:	51                   	push   %ecx
40e216:	e8 db 2d 01 00       	call   0x420ff6
40e21b:	8b f0                	mov    %eax,%esi
40e21d:	83 c4 04             	add    $0x4,%esp
40e220:	8b 45 e4             	mov    -0x1c(%ebp),%eax
40e223:	85 c0                	test   %eax,%eax
40e225:	74 20                	je     0x40e247
40e227:	8b 4d e8             	mov    -0x18(%ebp),%ecx
40e22a:	85 c9                	test   %ecx,%ecx
40e22c:	74 19                	je     0x40e247
40e22e:	c1 e1 02             	shl    $0x2,%ecx
40e231:	51                   	push   %ecx
40e232:	50                   	push   %eax
40e233:	56                   	push   %esi
40e234:	e8 47 2e 01 00       	call   0x421080
40e239:	83 c4 0c             	add    $0xc,%esp
40e23c:	ff 75 e4             	push   -0x1c(%ebp)
40e23f:	e8 28 2e 01 00       	call   0x42106c
40e244:	83 c4 04             	add    $0x4,%esp
40e247:	89 75 e4             	mov    %esi,-0x1c(%ebp)
40e24a:	e9 ff fe ff ff       	jmp    0x40e14e
40e24f:	8b f8                	mov    %eax,%edi
40e251:	8b 45 ec             	mov    -0x14(%ebp),%eax
40e254:	3b c8                	cmp    %eax,%ecx
40e256:	0f 84 12 59 03 00    	je     0x443b6e
40e25c:	6a 0c                	push   $0xc
40e25e:	e8 93 2d 01 00       	call   0x420ff6
40e263:	8b f0                	mov    %eax,%esi
40e265:	83 c4 04             	add    $0x4,%esp
40e268:	85 f6                	test   %esi,%esi
40e26a:	0f 84 c1 02 00 00    	je     0x40e531
40e270:	0f b7 4f 08          	movzwl 0x8(%edi),%ecx
40e274:	66 89 4e 08          	mov    %cx,0x8(%esi)
40e278:	0f b7 46 08          	movzwl 0x8(%esi),%eax