407dbe:	89 45 fc             	mov    %eax,-0x4(%ebp)
407dc1:	53                   	push   %ebx
407dc2:	33 db                	xor    %ebx,%ebx
407dc4:	56                   	push   %esi
407dc5:	8b 75 08             	mov    0x8(%ebp),%esi
407dc8:	89 5d d4             	mov    %ebx,-0x2c(%ebp)
407dcb:	8b 86 a8 00 00 00    	mov    0xa8(%esi),%eax
407dd1:	89 5d e0             	mov    %ebx,-0x20(%ebp)
407dd4:	89 5d dc             	mov    %ebx,-0x24(%ebp)
407dd7:	89 5d e4             	mov    %ebx,-0x1c(%ebp)
407dda:	89 5d d8             	mov    %ebx,-0x28(%ebp)
407ddd:	89 75 bc             	mov    %esi,-0x44(%ebp)
407de0:	89 5d c0             	mov    %ebx,-0x40(%ebp)
407de3:	85 c0                	test   %eax,%eax
407de5:	0f 84 0c 03 00 00    	je     0x4080f7
407deb:	57                   	push   %edi
407dec:	8d 7e 04             	lea    0x4(%esi),%edi
407def:	39 1f                	cmp    %ebx,(%edi)
407df1:	75 1c                	jne    0x407e0f
407df3:	57                   	push   %edi
407df4:	68 04 10 00 00       	push   $0x1004
407df9:	50                   	push   %eax
407dfa:	8d 45 bc             	lea    -0x44(%ebp),%eax
407dfd:	53                   	push   %ebx
407dfe:	50                   	push   %eax
407dff:	e8 b9 33 00 00       	call   0x40b1bd
407e04:	83 c4 14             	add    $0x14,%esp
407e07:	85 c0                	test   %eax,%eax
407e09:	0f 85 b4 02 00 00    	jne    0x4080c3
407e0f:	6a 04                	push   $0x4
407e11:	e8 8c 0c 00 00       	call   0x408aa2
407e16:	6a 02                	push   $0x2
407e18:	68 80 01 00 00       	push   $0x180
407e1d:	89 45 d4             	mov    %eax,-0x2c(%ebp)
407e20:	e8 33 0c 00 00       	call   0x408a58
407e25:	6a 01                	push   $0x1
407e27:	68 80 01 00 00       	push   $0x180
407e2c:	89 45 e0             	mov    %eax,-0x20(%ebp)
407e2f:	e8 24 0c 00 00       	call   0x408a58
407e34:	6a 01                	push   $0x1
407e36:	68 80 01 00 00       	push   $0x180
407e3b:	89 45 dc             	mov    %eax,-0x24(%ebp)
407e3e:	e8 15 0c 00 00       	call   0x408a58
407e43:	6a 01                	push   $0x1
407e45:	68 01 01 00 00       	push   $0x101
407e4a:	89 45 e4             	mov    %eax,-0x1c(%ebp)
407e4d:	e8 06 0c 00 00       	call   0x408a58
407e52:	8b c8                	mov    %eax,%ecx
407e54:	8b 45 d4             	mov    -0x2c(%ebp),%eax
407e57:	83 c4 24             	add    $0x24,%esp
407e5a:	89 4d d8             	mov    %ecx,-0x28(%ebp)
407e5d:	85 c0                	test   %eax,%eax
407e5f:	0f 84 5e 02 00 00    	je     0x4080c3
407e65:	39 5d e0             	cmp    %ebx,-0x20(%ebp)
407e68:	0f 84 55 02 00 00    	je     0x4080c3
407e6e:	85 c9                	test   %ecx,%ecx
407e70:	0f 84 4d 02 00 00    	je     0x4080c3
407e76:	39 5d dc             	cmp    %ebx,-0x24(%ebp)
407e79:	0f 84 44 02 00 00    	je     0x4080c3
407e7f:	39 5d e4             	cmp    %ebx,-0x1c(%ebp)
407e82:	0f 84 3b 02 00 00    	je     0x4080c3
407e88:	89 18                	mov    %ebx,(%eax)
407e8a:	8b c3                	mov    %ebx,%eax
407e8c:	88 04 08             	mov    %al,(%eax,%ecx,1)
407e8f:	40                   	inc    %eax
407e90:	3d 00 01 00 00       	cmp    $0x100,%eax
407e95:	7c f5                	jl     0x407e8c
407e97:	8d 45 e8             	lea    -0x18(%ebp),%eax
407e9a:	50                   	push   %eax
407e9b:	ff 37                	push   (%edi)
407e9d:	ff 15 8c 90 41 00    	call   *0x41908c
407ea3:	85 c0                	test   %eax,%eax
407ea5:	0f 84 18 02 00 00    	je     0x4080c3
407eab:	8b 45 e8             	mov    -0x18(%ebp),%eax
407eae:	83 f8 05             	cmp    $0x5,%eax
407eb1:	0f 87 0c 02 00 00    	ja     0x4080c3
407eb7:	8b 4d d8             	mov    -0x28(%ebp),%ecx
407eba:	53                   	push   %ebx
407ebb:	ff 37                	push   (%edi)
407ebd:	0f b7 c0             	movzwl %ax,%eax
407ec0:	89 45 d0             	mov    %eax,-0x30(%ebp)
407ec3:	8b 45 dc             	mov    -0x24(%ebp),%eax
407ec6:	ba ff 00 00 00       	mov    $0xff,%edx
407ecb:	52                   	push   %edx
407ecc:	05 81 00 00 00       	add    $0x81,%eax
407ed1:	50                   	push   %eax
407ed2:	52                   	push   %edx
407ed3:	41                   	inc    %ecx
407ed4:	51                   	push   %ecx
407ed5:	68 00 01 00 00       	push   $0x100
407eda:	ff b6 a8 00 00 00    	push   0xa8(%esi)
407ee0:	89 4d cc             	mov    %ecx,-0x34(%ebp)
407ee3:	53                   	push   %ebx
407ee4:	e8 0d 0b 00 00       	call   0x4089f6
407ee9:	83 c4 24             	add    $0x24,%esp
407eec:	85 c0                	test   %eax,%eax
407eee:	0f 84 cf 01 00 00    	je     0x4080c3
407ef4:	8b 45 e4             	mov    -0x1c(%ebp),%eax
407ef7:	53                   	push   %ebx
407ef8:	ff 37                	push   (%edi)
407efa:	b9 ff 00 00 00       	mov    $0xff,%ecx
407eff:	51                   	push   %ecx
407f00:	05 81 00 00 00       	add    $0x81,%eax
407f05:	50                   	push   %eax
407f06:	51                   	push   %ecx
407f07:	ff 75 cc             	push   -0x34(%ebp)
407f0a:	68 00 02 00 00       	push   $0x200
407f0f:	ff b6 a8 00 00 00    	push   0xa8(%esi)
407f15:	53                   	push   %ebx
407f16:	e8 db 0a 00 00       	call   0x4089f6
407f1b:	83 c4 24             	add    $0x24,%esp
407f1e:	85 c0                	test   %eax,%eax
407f20:	0f 84 9d 01 00 00    	je     0x4080c3
407f26:	83 7d d0 01          	cmpl   $0x1,-0x30(%ebp)
407f2a:	7e 31                	jle    0x407f5d
407f2c:	38 5d ee             	cmp    %bl,-0x12(%ebp)
407f2f:	74 2c                	je     0x407f5d
407f31:	8b 7d d8             	mov    -0x28(%ebp),%edi
407f34:	8d 4d ef             	lea    -0x11(%ebp),%ecx
407f37:	8a 01                	mov    (%ecx),%al
407f39:	84 c0                	test   %al,%al
407f3b:	74 1d                	je     0x407f5a
407f3d:	0f b6 51 ff          	movzbl -0x1(%ecx),%edx
407f41:	0f b6 c0             	movzbl %al,%eax
407f44:	eb 08                	jmp    0x407f4e
407f46:	c6 04 3a 20          	movb   $0x20,(%edx,%edi,1)
407f4a:	0f b6 01             	movzbl (%ecx),%eax
407f4d:	42                   	inc    %edx
407f4e:	3b d0                	cmp    %eax,%edx
407f50:	7e f4                	jle    0x407f46
407f52:	83 c1 02             	add    $0x2,%ecx
407f55:	38 59 ff             	cmp    %bl,-0x1(%ecx)
407f58:	75 dd                	jne    0x407f37
407f5a:	8d 7e 04             	lea    0x4(%esi),%edi
407f5d:	8b 45 e0             	mov    -0x20(%ebp),%eax
407f60:	53                   	push   %ebx
407f61:	ff 37                	push   (%edi)
407f63:	05 00 01 00 00       	add    $0x100,%eax
407f68:	50                   	push   %eax
407f69:	68 00 01 00 00       	push   $0x100
407f6e:	ff 75 d8             	push   -0x28(%ebp)
407f71:	6a 01                	push   $0x1
407f73:	53                   	push   %ebx
407f74:	e8 9c 74 00 00       	call   0x40f415
407f79:	83 c4 1c             	add    $0x1c,%esp
407f7c:	85 c0                	test   %eax,%eax
407f7e:	0f 84 3f 01 00 00    	je     0x4080c3
407f84:	8b 7d e0             	mov    -0x20(%ebp),%edi
407f87:	8b 45 e4             	mov    -0x1c(%ebp),%eax
407f8a:	33 c9                	xor    %ecx,%ecx
407f8c:	66 89 8f fe 00 00 00 	mov    %cx,0xfe(%edi)
407f93:	8b 4d dc             	mov    -0x24(%ebp),%ecx
407f96:	83 e9 80             	sub    $0xffffff80,%ecx
407f99:	88 59 ff             	mov    %bl,-0x1(%ecx)
407f9c:	88 58 7f             	mov    %bl,0x7f(%eax)
407f9f:	83 e8 80             	sub    $0xffffff80,%eax
407fa2:	83 7d d0 01          	cmpl   $0x1,-0x30(%ebp)
407fa6:	88 19                	mov    %bl,(%ecx)
407fa8:	89 4d c4             	mov    %ecx,-0x3c(%ebp)
407fab:	89 45 c8             	mov    %eax,-0x38(%ebp)
407fae:	88 18                	mov    %bl,(%eax)
407fb0:	7e 45                	jle    0x407ff7
407fb2:	38 5d ee             	cmp    %bl,-0x12(%ebp)
407fb5:	74 40                	je     0x407ff7
407fb7:	8d 4d ef             	lea    -0x11(%ebp),%ecx
407fba:	8a 01                	mov    (%ecx),%al
407fbc:	84 c0                	test   %al,%al
407fbe:	74 37                	je     0x407ff7
407fc0:	0f b6 51 ff          	movzbl -0x1(%ecx),%edx
407fc4:	0f b6 c0             	movzbl %al,%eax
407fc7:	3b d0                	cmp    %eax,%edx
407fc9:	7f 24                	jg     0x407fef
407fcb:	8d 87 00 01 00 00    	lea    0x100(%edi),%eax
407fd1:	8d 04 50             	lea    (%eax,%edx,2),%eax
407fd4:	89 45 cc             	mov    %eax,-0x34(%ebp)
407fd7:	8b f8                	mov    %eax,%edi
407fd9:	b8 00 80 00 00       	mov    $0x8000,%eax
407fde:	66 89 07             	mov    %ax,(%edi)
407fe1:	0f b6 01             	movzbl (%ecx),%eax
407fe4:	42                   	inc    %edx
407fe5:	8d 7f 02             	lea    0x2(%edi),%edi
407fe8:	3b d0                	cmp    %eax,%edx
407fea:	7e ed                	jle    0x407fd9
407fec:	8b 7d e0             	mov    -0x20(%ebp),%edi
407fef:	83 c1 02             	add    $0x2,%ecx
407ff2:	38 59 ff             	cmp    %bl,-0x1(%ecx)
407ff5:	75 c3                	jne    0x407fba
407ff7:	68 fe 00 00 00       	push   $0xfe
407ffc:	8d 87 00 02 00 00    	lea    0x200(%edi),%eax
408002:	50                   	push   %eax
408003:	57                   	push   %edi
408004:	e8 97 d6 ff ff       	call   0x4056a0
408009:	8b 4d dc             	mov    -0x24(%ebp),%ecx
40800c:	6a 7f                	push   $0x7f
40800e:	8d 81 00 01 00 00    	lea    0x100(%ecx),%eax
408014:	50                   	push   %eax
408015:	51                   	push   %ecx
408016:	e8 85 d6 ff ff       	call   0x4056a0
40801b:	8b 4d e4             	mov    -0x1c(%ebp),%ecx
40801e:	6a 7f                	push   $0x7f
408020:	8d 81 00 01 00 00    	lea    0x100(%ecx),%eax
408026:	50                   	push   %eax
408027:	51                   	push   %ecx
408028:	e8 73 d6 ff ff       	call   0x4056a0
40802d:	8b 86 88 00 00 00    	mov    0x88(%esi),%eax
408033:	83 c4 24             	add    $0x24,%esp
408036:	85 c0                	test   %eax,%eax
408038:	74 48                	je     0x408082
40803a:	50                   	push   %eax
40803b:	ff 15 54 90 41 00    	call   *0x419054
408041:	85 c0                	test   %eax,%eax
408043:	75 3d                	jne    0x408082
408045:	8b 86 8c 00 00 00    	mov    0x8c(%esi),%eax
40804b:	2d fe 00 00 00       	sub    $0xfe,%eax
408050:	50                   	push   %eax
408051:	e8 c2 d0 ff ff       	call   0x405118
408056:	8b 86 94 00 00 00    	mov    0x94(%esi),%eax
40805c:	83 c0 80             	add    $0xffffff80,%eax
40805f:	50                   	push   %eax
408060:	e8 b3 d0 ff ff       	call   0x405118
408065:	8b 86 98 00 00 00    	mov    0x98(%esi),%eax
40806b:	83 c0 80             	add    $0xffffff80,%eax
40806e:	50                   	push   %eax
40806f:	e8 a4 d0 ff ff       	call   0x405118
408074:	ff b6 88 00 00 00    	push   0x88(%esi)
40807a:	e8 99 d0 ff ff       	call   0x405118
40807f:	83 c4 10             	add    $0x10,%esp
408082:	8b 45 d4             	mov    -0x2c(%ebp),%eax
408085:	c7 00 01 00 00 00    	movl   $0x1,(%eax)
40808b:	89 86 88 00 00 00    	mov    %eax,0x88(%esi)
408091:	8d 87 00 01 00 00    	lea    0x100(%edi),%eax
408097:	89 86 90 00 00 00    	mov    %eax,0x90(%esi)
40809d:	8d 87 fe 00 00 00    	lea    0xfe(%edi),%eax
4080a3:	89 86 8c 00 00 00    	mov    %eax,0x8c(%esi)
4080a9:	8b 45 c4             	mov    -0x3c(%ebp),%eax
4080ac:	89 86 94 00 00 00    	mov    %eax,0x94(%esi)
4080b2:	8b 45 c8             	mov    -0x38(%ebp),%eax
4080b5:	89 86 98 00 00 00    	mov    %eax,0x98(%esi)
4080bb:	8b 45 d0             	mov    -0x30(%ebp),%eax
4080be:	89 46 74             	mov    %eax,0x74(%esi)
4080c1:	eb 26                	jmp    0x4080e9
4080c3:	ff 75 d4             	push   -0x2c(%ebp)
4080c6:	e8 4d d0 ff ff       	call   0x405118
4080cb:	ff 75 e0             	push   -0x20(%ebp)
4080ce:	e8 45 d0 ff ff       	call   0x405118
4080d3:	ff 75 dc             	push   -0x24(%ebp)
4080d6:	e8 3d d0 ff ff       	call   0x405118
4080db:	ff 75 e4             	push   -0x1c(%ebp)
4080de:	e8 35 d0 ff ff       	call   0x405118
4080e3:	33 db                	xor    %ebx,%ebx
4080e5:	83 c4 10             	add    $0x10,%esp
4080e8:	43                   	inc    %ebx
4080e9:	ff 75 d8             	push   -0x28(%ebp)
4080ec:	e8 27 d0 ff ff       	call   0x405118
4080f1:	59                   	pop    %ecx
4080f2:	8b c3                	mov    %ebx,%eax
4080f4:	5f                   	pop    %edi
4080f5:	eb 44                	jmp    0x40813b
4080f7:	8b 86 88 00 00 00    	mov    0x88(%esi),%eax
4080fd:	85 c0                	test   %eax,%eax
4080ff:	74 07                	je     0x408108
408101:	50                   	push   %eax
408102:	ff 15 54 90 41 00    	call   *0x419054
408108:	89 9e 88 00 00 00    	mov    %ebx,0x88(%esi)
40810e:	89 9e 8c 00 00 00    	mov    %ebx,0x8c(%esi)
408114:	c7 86 90 00 00 00 40 	movl   $0x41a440,0x90(%esi)
40811b:	a4 41 00
40811e:	c7 86 94 00 00 00 c8 	movl   $0x41a8c8,0x94(%esi)
408125:	a8 41 00
408128:	c7 86 98 00 00 00 48 	movl   $0x41aa48,0x98(%esi)
40812f:	aa 41 00
408132:	c7 46 74 01 00 00 00 	movl   $0x1,0x74(%esi)
408139:	33 c0                	xor    %eax,%eax
40813b:	8b 4d fc             	mov    -0x4(%ebp),%ecx
40813e:	5e                   	pop    %esi
40813f:	33 cd                	xor    %ebp,%ecx
408141:	5b                   	pop    %ebx
408142:	e8 f2 c5 ff ff       	call   0x404739
408147:	c9                   	leave
408148:	c3                   	ret
408149:	e8 a0 42 00 00       	call   0x40c3ee
40814e:	85 c0                	test   %eax,%eax
408150:	75 06                	jne    0x408158
408152:	b8 5c 07 42 00       	mov    $0x42075c,%eax
408157:	c3                   	ret
408158:	83 c0 0c             	add    $0xc,%eax
40815b:	c3                   	ret
40815c:	55                   	push   %ebp
40815d:	8b ec                	mov    %esp,%ebp
40815f:	56                   	push   %esi
408160:	e8 e4 ff ff ff       	call   0x408149
408165:	8b 4d 08             	mov    0x8(%ebp),%ecx
408168:	51                   	push   %ecx
408169:	89 08                	mov    %ecx,(%eax)
40816b:	e8 20 00 00 00       	call   0x408190
408170:	59                   	pop    %ecx
408171:	8b f0                	mov    %eax,%esi
408173:	e8 05 00 00 00       	call   0x40817d
408178:	89 30                	mov    %esi,(%eax)
40817a:	5e                   	pop    %esi
40817b:	5d                   	pop    %ebp
40817c:	c3                   	ret
40817d:	e8 6c 42 00 00       	call   0x40c3ee
408182:	85 c0                	test   %eax,%eax
408184:	75 06                	jne    0x40818c
408186:	b8 58 07 42 00       	mov    $0x420758,%eax
40818b:	c3                   	ret
40818c:	83 c0 08             	add    $0x8,%eax
40818f:	c3                   	ret
408190:	55                   	push   %ebp
408191:	8b ec                	mov    %esp,%ebp
408193:	8b 4d 08             	mov    0x8(%ebp),%ecx
408196:	33 c0                	xor    %eax,%eax
408198:	3b 0c c5 f0 05 42 00 	cmp    0x4205f0(,%eax,8),%ecx
40819f:	74 27                	je     0x4081c8
4081a1:	40                   	inc    %eax
4081a2:	83 f8 2d             	cmp    $0x2d,%eax
4081a5:	72 f1                	jb     0x408198
4081a7:	8d 41 ed             	lea    -0x13(%ecx),%eax
4081aa:	83 f8 11             	cmp    $0x11,%eax
4081ad:	77 05                	ja     0x4081b4
4081af:	6a 0d                	push   $0xd
4081b1:	58                   	pop    %eax
4081b2:	5d                   	pop    %ebp
4081b3:	c3                   	ret
4081b4:	8d 81 44 ff ff ff    	lea    -0xbc(%ecx),%eax
4081ba:	6a 0e                	push   $0xe
4081bc:	59                   	pop    %ecx
4081bd:	3b c8                	cmp    %eax,%ecx
4081bf:	1b c0                	sbb    %eax,%eax
4081c1:	23 c1                	and    %ecx,%eax
4081c3:	83 c0 08             	add    $0x8,%eax
4081c6:	5d                   	pop    %ebp
4081c7:	c3                   	ret
4081c8:	8b 04 c5 f4 05 42 00 	mov    0x4205f4(,%eax,8),%eax
4081cf:	5d                   	pop    %ebp
4081d0:	c3                   	ret
4081d1:	55                   	push   %ebp
4081d2:	8b ec                	mov    %esp,%ebp
4081d4:	83 ec 10             	sub    $0x10,%esp
4081d7:	56                   	push   %esi
4081d8:	ff 75 08             	push   0x8(%ebp)
4081db:	8d 4d f0             	lea    -0x10(%ebp),%ecx
4081de:	e8 1a d0 ff ff       	call   0x4051fd
4081e3:	0f b6 75 0c          	movzbl 0xc(%ebp),%esi
4081e7:	8b 45 f4             	mov    -0xc(%ebp),%eax
4081ea:	8a 4d 14             	mov    0x14(%ebp),%cl
4081ed:	84 4c 30 19          	test   %cl,0x19(%eax,%esi,1)
4081f1:	75 1f                	jne    0x408212
4081f3:	33 d2                	xor    %edx,%edx