40fe59:	66 89 02             	mov    %ax,(%edx)
40fe5c:	83 c2 02             	add    $0x2,%edx
40fe5f:	0f b7 01             	movzwl (%ecx),%eax
40fe62:	83 c1 02             	add    $0x2,%ecx
40fe65:	66 85 c0             	test   %ax,%ax
40fe68:	74 1f                	je     0x40fe89
40fe6a:	84 db                	test   %bl,%bl
40fe6c:	75 d0                	jne    0x40fe3e
40fe6e:	66 3b 45 f8          	cmp    -0x8(%ebp),%ax
40fe72:	74 09                	je     0x40fe7d
40fe74:	66 3b 45 f4          	cmp    -0xc(%ebp),%ax
40fe78:	6a 22                	push   $0x22
40fe7a:	58                   	pop    %eax
40fe7b:	75 c4                	jne    0x40fe41
40fe7d:	85 d2                	test   %edx,%edx
40fe7f:	74 0b                	je     0x40fe8c
40fe81:	33 c0                	xor    %eax,%eax
40fe83:	66 89 42 fe          	mov    %ax,-0x2(%edx)
40fe87:	eb 03                	jmp    0x40fe8c
40fe89:	83 e9 02             	sub    $0x2,%ecx
40fe8c:	c6 45 ff 00          	movb   $0x0,-0x1(%ebp)
40fe90:	0f b7 01             	movzwl (%ecx),%eax
40fe93:	8b f8                	mov    %eax,%edi
40fe95:	66 85 c0             	test   %ax,%ax
40fe98:	74 19                	je     0x40feb3
40fe9a:	8b 5d f8             	mov    -0x8(%ebp),%ebx
40fe9d:	66 3b c3             	cmp    %bx,%ax
40fea0:	74 09                	je     0x40feab
40fea2:	0f b7 f8             	movzwl %ax,%edi
40fea5:	66 3b 45 f4          	cmp    -0xc(%ebp),%ax
40fea9:	75 08                	jne    0x40feb3
40feab:	83 c1 02             	add    $0x2,%ecx
40feae:	0f b7 01             	movzwl (%ecx),%eax
40feb1:	eb ea                	jmp    0x40fe9d
40feb3:	66 85 ff             	test   %di,%di
40feb6:	0f 84 c6 00 00 00    	je     0x40ff82
40febc:	85 f6                	test   %esi,%esi
40febe:	74 08                	je     0x40fec8
40fec0:	89 16                	mov    %edx,(%esi)
40fec2:	83 c6 04             	add    $0x4,%esi
40fec5:	89 75 0c             	mov    %esi,0xc(%ebp)
40fec8:	8b 45 14             	mov    0x14(%ebp),%eax
40fecb:	6a 5c                	push   $0x5c
40fecd:	5e                   	pop    %esi
40fece:	ff 00                	incl   (%eax)
40fed0:	0f b7 01             	movzwl (%ecx),%eax
40fed3:	33 db                	xor    %ebx,%ebx
40fed5:	c7 45 f0 01 00 00 00 	movl   $0x1,-0x10(%ebp)
40fedc:	8b f8                	mov    %eax,%edi
40fede:	66 3b c6             	cmp    %si,%ax
40fee1:	75 0e                	jne    0x40fef1
40fee3:	83 c1 02             	add    $0x2,%ecx
40fee6:	43                   	inc    %ebx
40fee7:	0f b7 01             	movzwl (%ecx),%eax
40feea:	66 3b c6             	cmp    %si,%ax
40feed:	74 f4                	je     0x40fee3
40feef:	8b f8                	mov    %eax,%edi
40fef1:	6a 22                	push   $0x22
40fef3:	58                   	pop    %eax
40fef4:	66 3b f8             	cmp    %ax,%di
40fef7:	75 29                	jne    0x40ff22
40fef9:	f6 c3 01             	test   $0x1,%bl
40fefc:	75 22                	jne    0x40ff20
40fefe:	8a 45 ff             	mov    -0x1(%ebp),%al
40ff01:	84 c0                	test   %al,%al
40ff03:	74 11                	je     0x40ff16
40ff05:	6a 22                	push   $0x22
40ff07:	5f                   	pop    %edi
40ff08:	66 39 79 02          	cmp    %di,0x2(%ecx)
40ff0c:	75 05                	jne    0x40ff13
40ff0e:	83 c1 02             	add    $0x2,%ecx
40ff11:	eb 0d                	jmp    0x40ff20
40ff13:	8a 45 ff             	mov    -0x1(%ebp),%al
40ff16:	83 65 f0 00          	andl   $0x0,-0x10(%ebp)
40ff1a:	84 c0                	test   %al,%al
40ff1c:	0f 94 45 ff          	sete   -0x1(%ebp)
40ff20:	d1 eb                	shr    $1,%ebx
40ff22:	8b 7d 18             	mov    0x18(%ebp),%edi
40ff25:	85 db                	test   %ebx,%ebx
40ff27:	74 0f                	je     0x40ff38
40ff29:	4b                   	dec    %ebx
40ff2a:	85 d2                	test   %edx,%edx
40ff2c:	74 06                	je     0x40ff34
40ff2e:	66 89 32             	mov    %si,(%edx)
40ff31:	83 c2 02             	add    $0x2,%edx
40ff34:	ff 07                	incl   (%edi)
40ff36:	eb ed                	jmp    0x40ff25
40ff38:	0f b7 01             	movzwl (%ecx),%eax
40ff3b:	66 85 c0             	test   %ax,%ax
40ff3e:	74 2c                	je     0x40ff6c
40ff40:	80 7d ff 00          	cmpb   $0x0,-0x1(%ebp)
40ff44:	75 0c                	jne    0x40ff52
40ff46:	66 3b 45 f8          	cmp    -0x8(%ebp),%ax
40ff4a:	74 20                	je     0x40ff6c
40ff4c:	66 3b 45 f4          	cmp    -0xc(%ebp),%ax
40ff50:	74 1a                	je     0x40ff6c
40ff52:	83 7d f0 00          	cmpl   $0x0,-0x10(%ebp)
40ff56:	74 0c                	je     0x40ff64
40ff58:	85 d2                	test   %edx,%edx
40ff5a:	74 06                	je     0x40ff62
40ff5c:	66 89 02             	mov    %ax,(%edx)
40ff5f:	83 c2 02             	add    $0x2,%edx
40ff62:	ff 07                	incl   (%edi)
40ff64:	83 c1 02             	add    $0x2,%ecx
40ff67:	e9 64 ff ff ff       	jmp    0x40fed0
40ff6c:	8b 75 0c             	mov    0xc(%ebp),%esi
40ff6f:	85 d2                	test   %edx,%edx
40ff71:	74 08                	je     0x40ff7b
40ff73:	33 c0                	xor    %eax,%eax
40ff75:	66 89 02             	mov    %ax,(%edx)
40ff78:	83 c2 02             	add    $0x2,%edx
40ff7b:	ff 07                	incl   (%edi)
40ff7d:	e9 0e ff ff ff       	jmp    0x40fe90
40ff82:	5b                   	pop    %ebx
40ff83:	85 f6                	test   %esi,%esi
40ff85:	74 03                	je     0x40ff8a
40ff87:	83 26 00             	andl   $0x0,(%esi)
40ff8a:	8b 45 14             	mov    0x14(%ebp),%eax
40ff8d:	5f                   	pop    %edi
40ff8e:	5e                   	pop    %esi
40ff8f:	ff 00                	incl   (%eax)
40ff91:	c9                   	leave
40ff92:	c3                   	ret
40ff93:	8b ff                	mov    %edi,%edi
40ff95:	55                   	push   %ebp
40ff96:	8b ec                	mov    %esp,%ebp
40ff98:	56                   	push   %esi
40ff99:	8b 75 08             	mov    0x8(%ebp),%esi
40ff9c:	81 fe ff ff ff 3f    	cmp    $0x3fffffff,%esi
40ffa2:	73 39                	jae    0x40ffdd
40ffa4:	83 c8 ff             	or     $0xffffffff,%eax
40ffa7:	8b 4d 0c             	mov    0xc(%ebp),%ecx
40ffaa:	33 d2                	xor    %edx,%edx
40ffac:	f7 75 10             	divl   0x10(%ebp)
40ffaf:	3b c8                	cmp    %eax,%ecx
40ffb1:	73 2a                	jae    0x40ffdd
40ffb3:	0f af 4d 10          	imul   0x10(%ebp),%ecx
40ffb7:	c1 e6 02             	shl    $0x2,%esi
40ffba:	8b c6                	mov    %esi,%eax
40ffbc:	f7 d0                	not    %eax
40ffbe:	3b c1                	cmp    %ecx,%eax
40ffc0:	76 1b                	jbe    0x40ffdd
40ffc2:	8d 04 0e             	lea    (%esi,%ecx,1),%eax
40ffc5:	6a 01                	push   $0x1
40ffc7:	50                   	push   %eax
40ffc8:	e8 e1 30 00 00       	call   0x4130ae
40ffcd:	6a 00                	push   $0x0
40ffcf:	8b f0                	mov    %eax,%esi
40ffd1:	e8 35 31 00 00       	call   0x41310b
40ffd6:	83 c4 0c             	add    $0xc,%esp
40ffd9:	8b c6                	mov    %esi,%eax
40ffdb:	eb 02                	jmp    0x40ffdf
40ffdd:	33 c0                	xor    %eax,%eax
40ffdf:	5e                   	pop    %esi
40ffe0:	5d                   	pop    %ebp
40ffe1:	c3                   	ret
40ffe2:	8b ff                	mov    %edi,%edi
40ffe4:	55                   	push   %ebp
40ffe5:	8b ec                	mov    %esp,%ebp
40ffe7:	5d                   	pop    %ebp
40ffe8:	e9 e3 fc ff ff       	jmp    0x40fcd0
40ffed:	83 3d a0 49 43 00 00 	cmpl   $0x0,0x4349a0
40fff4:	74 03                	je     0x40fff9
40fff6:	33 c0                	xor    %eax,%eax
40fff8:	c3                   	ret
40fff9:	56                   	push   %esi
40fffa:	57                   	push   %edi
40fffb:	e8 ab b3 00 00       	call   0x41b3ab
410000:	8b f0                	mov    %eax,%esi
410002:	85 f6                	test   %esi,%esi
410004:	75 05                	jne    0x41000b
410006:	83 cf ff             	or     $0xffffffff,%edi
410009:	eb 24                	jmp    0x41002f
41000b:	56                   	push   %esi
41000c:	e8 2a 00 00 00       	call   0x41003b
410011:	59                   	pop    %ecx
410012:	85 c0                	test   %eax,%eax
410014:	75 05                	jne    0x41001b
410016:	83 cf ff             	or     $0xffffffff,%edi
410019:	eb 0c                	jmp    0x410027
41001b:	a3 a4 49 43 00       	mov    %eax,0x4349a4
410020:	33 ff                	xor    %edi,%edi
410022:	a3 a0 49 43 00       	mov    %eax,0x4349a0
410027:	6a 00                	push   $0x0
410029:	e8 dd 30 00 00       	call   0x41310b
41002e:	59                   	pop    %ecx
41002f:	56                   	push   %esi
410030:	e8 d6 30 00 00       	call   0x41310b
410035:	59                   	pop    %ecx
410036:	8b c7                	mov    %edi,%eax
410038:	5f                   	pop    %edi
410039:	5e                   	pop    %esi
41003a:	c3                   	ret
41003b:	8b ff                	mov    %edi,%edi
41003d:	55                   	push   %ebp
41003e:	8b ec                	mov    %esp,%ebp
410040:	83 ec 0c             	sub    $0xc,%esp
410043:	53                   	push   %ebx
410044:	8b 5d 08             	mov    0x8(%ebp),%ebx
410047:	33 c0                	xor    %eax,%eax
410049:	89 45 fc             	mov    %eax,-0x4(%ebp)
41004c:	8b d0                	mov    %eax,%edx
41004e:	56                   	push   %esi
41004f:	57                   	push   %edi
410050:	0f b7 03             	movzwl (%ebx),%eax
410053:	8b f3                	mov    %ebx,%esi
410055:	66 85 c0             	test   %ax,%ax
410058:	74 33                	je     0x41008d
41005a:	6a 3d                	push   $0x3d
41005c:	8b c8                	mov    %eax,%ecx
41005e:	5b                   	pop    %ebx
41005f:	66 3b cb             	cmp    %bx,%cx
410062:	74 01                	je     0x410065
410064:	42                   	inc    %edx
410065:	8b ce                	mov    %esi,%ecx
410067:	8d 79 02             	lea    0x2(%ecx),%edi
41006a:	66 8b 01             	mov    (%ecx),%ax
41006d:	83 c1 02             	add    $0x2,%ecx
410070:	66 3b 45 fc          	cmp    -0x4(%ebp),%ax
410074:	75 f4                	jne    0x41006a
410076:	2b cf                	sub    %edi,%ecx
410078:	d1 f9                	sar    $1,%ecx
41007a:	8d 34 4e             	lea    (%esi,%ecx,2),%esi
41007d:	83 c6 02             	add    $0x2,%esi
410080:	0f b7 06             	movzwl (%esi),%eax
410083:	8b c8                	mov    %eax,%ecx
410085:	66 85 c0             	test   %ax,%ax
410088:	75 d5                	jne    0x41005f
41008a:	8b 5d 08             	mov    0x8(%ebp),%ebx
41008d:	8d 42 01             	lea    0x1(%edx),%eax
410090:	6a 04                	push   $0x4
410092:	50                   	push   %eax
410093:	e8 16 30 00 00       	call   0x4130ae
410098:	8b f8                	mov    %eax,%edi
41009a:	59                   	pop    %ecx
41009b:	59                   	pop    %ecx
41009c:	85 ff                	test   %edi,%edi
41009e:	0f 84 87 00 00 00    	je     0x41012b
4100a4:	0f b7 03             	movzwl (%ebx),%eax
4100a7:	89 7d f8             	mov    %edi,-0x8(%ebp)
4100aa:	66 85 c0             	test   %ax,%ax
4100ad:	74 7c                	je     0x41012b
4100af:	8b d0                	mov    %eax,%edx
4100b1:	8b cb                	mov    %ebx,%ecx
4100b3:	8d 71 02             	lea    0x2(%ecx),%esi
4100b6:	66 8b 01             	mov    (%ecx),%ax
4100b9:	83 c1 02             	add    $0x2,%ecx
4100bc:	66 3b 45 fc          	cmp    -0x4(%ebp),%ax
4100c0:	75 f4                	jne    0x4100b6
4100c2:	2b ce                	sub    %esi,%ecx
4100c4:	d1 f9                	sar    $1,%ecx
4100c6:	6a 3d                	push   $0x3d
4100c8:	8d 41 01             	lea    0x1(%ecx),%eax
4100cb:	59                   	pop    %ecx
4100cc:	89 45 f4             	mov    %eax,-0xc(%ebp)
4100cf:	66 3b d1             	cmp    %cx,%dx
4100d2:	74 38                	je     0x41010c
4100d4:	6a 02                	push   $0x2
4100d6:	50                   	push   %eax
4100d7:	e8 d2 2f 00 00       	call   0x4130ae
4100dc:	8b f0                	mov    %eax,%esi
4100de:	59                   	pop    %ecx
4100df:	59                   	pop    %ecx
4100e0:	85 f6                	test   %esi,%esi
4100e2:	74 37                	je     0x41011b
4100e4:	53                   	push   %ebx
4100e5:	ff 75 f4             	push   -0xc(%ebp)
4100e8:	56                   	push   %esi
4100e9:	e8 6f 89 00 00       	call   0x418a5d
4100ee:	83 c4 0c             	add    $0xc,%esp
4100f1:	85 c0                	test   %eax,%eax
4100f3:	75 46                	jne    0x41013b
4100f5:	8b 45 f8             	mov    -0x8(%ebp),%eax
4100f8:	89 30                	mov    %esi,(%eax)
4100fa:	83 c0 04             	add    $0x4,%eax
4100fd:	89 45 f8             	mov    %eax,-0x8(%ebp)
410100:	33 c0                	xor    %eax,%eax
410102:	50                   	push   %eax
410103:	e8 03 30 00 00       	call   0x41310b
410108:	8b 45 f4             	mov    -0xc(%ebp),%eax
41010b:	59                   	pop    %ecx
41010c:	8d 1c 43             	lea    (%ebx,%eax,2),%ebx
41010f:	0f b7 03             	movzwl (%ebx),%eax
410112:	8b d0                	mov    %eax,%edx
410114:	66 85 c0             	test   %ax,%ax
410117:	75 98                	jne    0x4100b1
410119:	eb 10                	jmp    0x41012b
41011b:	57                   	push   %edi
41011c:	e8 27 00 00 00       	call   0x410148
410121:	33 ff                	xor    %edi,%edi
410123:	57                   	push   %edi
410124:	e8 e2 2f 00 00       	call   0x41310b
410129:	59                   	pop    %ecx
41012a:	59                   	pop    %ecx
41012b:	33 c0                	xor    %eax,%eax
41012d:	50                   	push   %eax
41012e:	e8 d8 2f 00 00       	call   0x41310b
410133:	59                   	pop    %ecx
410134:	8b c7                	mov    %edi,%eax
410136:	5f                   	pop    %edi
410137:	5e                   	pop    %esi
410138:	5b                   	pop    %ebx
410139:	c9                   	leave
41013a:	c3                   	ret
41013b:	33 c0                	xor    %eax,%eax
41013d:	50                   	push   %eax
41013e:	50                   	push   %eax
41013f:	50                   	push   %eax
410140:	50                   	push   %eax
410141:	50                   	push   %eax
410142:	e8 67 cf ff ff       	call   0x40d0ae
410147:	cc                   	int3
410148:	8b ff                	mov    %edi,%edi
41014a:	55                   	push   %ebp
41014b:	8b ec                	mov    %esp,%ebp
41014d:	56                   	push   %esi
41014e:	8b 75 08             	mov    0x8(%ebp),%esi
410151:	85 f6                	test   %esi,%esi
410153:	74 1f                	je     0x410174
410155:	8b 06                	mov    (%esi),%eax
410157:	57                   	push   %edi
410158:	8b fe                	mov    %esi,%edi
41015a:	eb 0c                	jmp    0x410168
41015c:	50                   	push   %eax
41015d:	e8 a9 2f 00 00       	call   0x41310b
410162:	8d 7f 04             	lea    0x4(%edi),%edi
410165:	8b 07                	mov    (%edi),%eax
410167:	59                   	pop    %ecx
410168:	85 c0                	test   %eax,%eax
41016a:	75 f0                	jne    0x41015c
41016c:	56                   	push   %esi
41016d:	e8 99 2f 00 00       	call   0x41310b
410172:	59                   	pop    %ecx
410173:	5f                   	pop    %edi
410174:	5e                   	pop    %esi
410175:	5d                   	pop    %ebp
410176:	c3                   	ret
410177:	8b ff                	mov    %edi,%edi
410179:	55                   	push   %ebp
41017a:	8b ec                	mov    %esp,%ebp
41017c:	56                   	push   %esi
41017d:	8b f1                	mov    %ecx,%esi
41017f:	57                   	push   %edi
410180:	8d 7e 04             	lea    0x4(%esi),%edi
410183:	eb 11                	jmp    0x410196
410185:	8b 4d 08             	mov    0x8(%ebp),%ecx
410188:	56                   	push   %esi
410189:	ff 15 54 41 42 00    	call   *0x424154
41018f:	ff 55 08             	call   *0x8(%ebp)
410192:	59                   	pop    %ecx