408e3f:	bb 04 01 00 00       	mov    $0x104,%ebx
408e44:	50                   	push   %eax
408e45:	8b d3                	mov    %ebx,%edx
408e47:	e8 27 00 00 00       	call   0x408e73
408e4c:	85 c0                	test   %eax,%eax
408e4e:	78 1c                	js     0x408e6c
408e50:	39 5d fc             	cmp    %ebx,-0x4(%ebp)
408e53:	73 12                	jae    0x408e67
408e55:	6a ff                	push   $0xffffffff
408e57:	ff 77 0c             	push   0xc(%edi)
408e5a:	53                   	push   %ebx
408e5b:	56                   	push   %esi
408e5c:	ff 15 e8 b2 41 00    	call   *0x41b2e8
408e62:	83 c4 10             	add    $0x10,%esp
408e65:	eb 05                	jmp    0x408e6c
408e67:	33 c0                	xor    %eax,%eax
408e69:	66 89 06             	mov    %ax,(%esi)
408e6c:	5b                   	pop    %ebx
408e6d:	5f                   	pop    %edi
408e6e:	5e                   	pop    %esi
408e6f:	c9                   	leave
408e70:	c2 08 00             	ret    $0x8
408e73:	8b ff                	mov    %edi,%edi
408e75:	55                   	push   %ebp
408e76:	8b ec                	mov    %esp,%ebp
408e78:	56                   	push   %esi
408e79:	8b f2                	mov    %edx,%esi
408e7b:	85 c9                	test   %ecx,%ecx
408e7d:	74 1b                	je     0x408e9a
408e7f:	56                   	push   %esi
408e80:	51                   	push   %ecx
408e81:	ff 15 6c b3 41 00    	call   *0x41b36c
408e87:	59                   	pop    %ecx
408e88:	59                   	pop    %ecx
408e89:	3b c6                	cmp    %esi,%eax
408e8b:	74 0d                	je     0x408e9a
408e8d:	8b 4d 08             	mov    0x8(%ebp),%ecx
408e90:	85 c9                	test   %ecx,%ecx
408e92:	74 02                	je     0x408e96
408e94:	89 01                	mov    %eax,(%ecx)
408e96:	33 c0                	xor    %eax,%eax
408e98:	eb 0f                	jmp    0x408ea9
408e9a:	8b 45 08             	mov    0x8(%ebp),%eax
408e9d:	85 c0                	test   %eax,%eax
408e9f:	74 03                	je     0x408ea4
408ea1:	83 20 00             	andl   $0x0,(%eax)
408ea4:	b8 57 00 07 80       	mov    $0x80070057,%eax
408ea9:	5e                   	pop    %esi
408eaa:	5d                   	pop    %ebp
408eab:	c2 04 00             	ret    $0x4
408eae:	8b ff                	mov    %edi,%edi
408eb0:	56                   	push   %esi
408eb1:	33 f6                	xor    %esi,%esi
408eb3:	8b d6                	mov    %esi,%edx
408eb5:	8b c6                	mov    %esi,%eax
408eb7:	66 39 34 85 30 51 41 	cmp    %si,0x415130(,%eax,4)
408ebe:	00
408ebf:	74 05                	je     0x408ec6
408ec1:	3b d1                	cmp    %ecx,%edx
408ec3:	74 07                	je     0x408ecc
408ec5:	42                   	inc    %edx
408ec6:	40                   	inc    %eax
408ec7:	83 f8 29             	cmp    $0x29,%eax
408eca:	72 eb                	jb     0x408eb7
408ecc:	5e                   	pop    %esi
408ecd:	c3                   	ret
408ece:	cc                   	int3
408ecf:	cc                   	int3
408ed0:	8b ff                	mov    %edi,%edi
408ed2:	55                   	push   %ebp
408ed3:	8b ec                	mov    %esp,%ebp
408ed5:	83 ec 48             	sub    $0x48,%esp
408ed8:	57                   	push   %edi
408ed9:	8b 7d 14             	mov    0x14(%ebp),%edi
408edc:	85 ff                	test   %edi,%edi
408ede:	0f 84 1d 01 00 00    	je     0x409001
408ee4:	53                   	push   %ebx
408ee5:	68 ed 03 00 00       	push   $0x3ed
408eea:	ff 75 08             	push   0x8(%ebp)
408eed:	ff 15 d4 b1 41 00    	call   *0x41b1d4
408ef3:	50                   	push   %eax
408ef4:	ff 15 d0 b1 41 00    	call   *0x41b1d0
408efa:	6a 3c                	push   $0x3c
408efc:	89 45 f4             	mov    %eax,-0xc(%ebp)
408eff:	33 db                	xor    %ebx,%ebx
408f01:	8d 45 b8             	lea    -0x48(%ebp),%eax
408f04:	53                   	push   %ebx
408f05:	50                   	push   %eax
408f06:	e8 56 b2 00 00       	call   0x414161
408f0b:	83 c4 0c             	add    $0xc,%esp
408f0e:	c7 45 b8 01 00 00 00 	movl   $0x1,-0x48(%ebp)
408f15:	8b c3                	mov    %ebx,%eax
408f17:	89 45 f8             	mov    %eax,-0x8(%ebp)
408f1a:	85 ff                	test   %edi,%edi
408f1c:	0f 8e a6 00 00 00    	jle    0x408fc8
408f22:	56                   	push   %esi
408f23:	8b 4d 10             	mov    0x10(%ebp),%ecx
408f26:	0f b7 34 41          	movzwl (%ecx,%eax,2),%esi
408f2a:	66 85 f6             	test   %si,%si
408f2d:	0f 84 94 00 00 00    	je     0x408fc7
408f33:	b8 00 30 00 00       	mov    $0x3000,%eax
408f38:	66 3b c6             	cmp    %si,%ax
408f3b:	0f 84 86 00 00 00    	je     0x408fc7
408f41:	b8 00 ff 00 00       	mov    $0xff00,%eax
408f46:	66 3b f0             	cmp    %ax,%si
408f49:	77 7c                	ja     0x408fc7
408f4b:	8a cb                	mov    %bl,%cl
408f4d:	e8 2b 69 00 00       	call   0x40f87d
408f52:	66 3b f0             	cmp    %ax,%si
408f55:	74 06                	je     0x408f5d
408f57:	43                   	inc    %ebx
408f58:	83 fb 29             	cmp    $0x29,%ebx
408f5b:	72 ee                	jb     0x408f4b
408f5d:	83 fb 29             	cmp    $0x29,%ebx
408f60:	73 63                	jae    0x408fc5
408f62:	33 d2                	xor    %edx,%edx
408f64:	89 55 fc             	mov    %edx,-0x4(%ebp)
408f67:	8b ca                	mov    %edx,%ecx
408f69:	8b c2                	mov    %edx,%eax
408f6b:	85 db                	test   %ebx,%ebx
408f6d:	7e 13                	jle    0x408f82
408f6f:	66 39 14 85 30 51 41 	cmp    %dx,0x415130(,%eax,4)
408f76:	00
408f77:	74 01                	je     0x408f7a
408f79:	41                   	inc    %ecx
408f7a:	40                   	inc    %eax
408f7b:	3b c3                	cmp    %ebx,%eax
408f7d:	7c f0                	jl     0x408f6f
408f7f:	89 4d fc             	mov    %ecx,-0x4(%ebp)
408f82:	8a cb                	mov    %bl,%cl
408f84:	8d 34 9d 30 51 41 00 	lea    0x415130(,%ebx,4),%esi
408f8b:	e8 ed 68 00 00       	call   0x40f87d
408f90:	66 89 06             	mov    %ax,(%esi)
408f93:	33 db                	xor    %ebx,%ebx
408f95:	8b 45 fc             	mov    -0x4(%ebp),%eax
408f98:	89 45 bc             	mov    %eax,-0x44(%ebp)
408f9b:	8d 45 b8             	lea    -0x48(%ebp),%eax
408f9e:	50                   	push   %eax
408f9f:	53                   	push   %ebx
408fa0:	68 4d 10 00 00       	push   $0x104d
408fa5:	ff 75 f4             	push   -0xc(%ebp)
408fa8:	89 5d c0             	mov    %ebx,-0x40(%ebp)
408fab:	89 75 cc             	mov    %esi,-0x34(%ebp)
408fae:	ff 15 d8 b1 41 00    	call   *0x41b1d8
408fb4:	8b 45 f8             	mov    -0x8(%ebp),%eax
408fb7:	40                   	inc    %eax
408fb8:	89 45 f8             	mov    %eax,-0x8(%ebp)
408fbb:	3b c7                	cmp    %edi,%eax
408fbd:	0f 8c 60 ff ff ff    	jl     0x408f23
408fc3:	eb 02                	jmp    0x408fc7
408fc5:	33 db                	xor    %ebx,%ebx
408fc7:	5e                   	pop    %esi
408fc8:	6a 01                	push   $0x1
408fca:	68 ed 03 00 00       	push   $0x3ed
408fcf:	ff 75 08             	push   0x8(%ebp)
408fd2:	ff 15 d4 b1 41 00    	call   *0x41b1d4
408fd8:	50                   	push   %eax
408fd9:	ff 15 d0 b1 41 00    	call   *0x41b1d0
408fdf:	50                   	push   %eax
408fe0:	ff 15 dc b1 41 00    	call   *0x41b1dc
408fe6:	53                   	push   %ebx
408fe7:	6a 01                	push   $0x1
408fe9:	ff 75 08             	push   0x8(%ebp)
408fec:	ff 15 d4 b1 41 00    	call   *0x41b1d4
408ff2:	50                   	push   %eax
408ff3:	ff 15 d0 b1 41 00    	call   *0x41b1d0
408ff9:	50                   	push   %eax
408ffa:	ff 15 dc b1 41 00    	call   *0x41b1dc
409000:	5b                   	pop    %ebx
409001:	33 c0                	xor    %eax,%eax
409003:	5f                   	pop    %edi
409004:	c9                   	leave
409005:	c2 10 00             	ret    $0x10
409008:	cc                   	int3
409009:	cc                   	int3
40900a:	cc                   	int3
40900b:	cc                   	int3
40900c:	cc                   	int3
40900d:	cc                   	int3
40900e:	cc                   	int3
40900f:	cc                   	int3
409010:	8b ff                	mov    %edi,%edi
409012:	55                   	push   %ebp
409013:	8b ec                	mov    %esp,%ebp
409015:	83 ec 10             	sub    $0x10,%esp
409018:	53                   	push   %ebx
409019:	33 db                	xor    %ebx,%ebx
40901b:	56                   	push   %esi
40901c:	89 5d fc             	mov    %ebx,-0x4(%ebp)
40901f:	ff 15 e0 b1 41 00    	call   *0x41b1e0
409025:	8b f0                	mov    %eax,%esi
409027:	85 f6                	test   %esi,%esi
409029:	0f 84 8c 00 00 00    	je     0x4090bb
40902f:	6a 1f                	push   $0x1f
409031:	8d 55 fc             	lea    -0x4(%ebp),%edx
409034:	59                   	pop    %ecx
409035:	e8 ab 69 00 00       	call   0x40f9e5
40903a:	85 c0                	test   %eax,%eax
40903c:	74 7d                	je     0x4090bb
40903e:	39 5d fc             	cmp    %ebx,-0x4(%ebp)
409041:	74 78                	je     0x4090bb
409043:	6a 02                	push   $0x2
409045:	8d 45 f8             	lea    -0x8(%ebp),%eax
409048:	50                   	push   %eax
409049:	ff 75 08             	push   0x8(%ebp)
40904c:	ff 15 e4 b1 41 00    	call   *0x41b1e4
409052:	85 c0                	test   %eax,%eax
409054:	74 10                	je     0x409066
409056:	b8 00 30 00 00       	mov    $0x3000,%eax
40905b:	66 3b 45 f8          	cmp    -0x8(%ebp),%ax
40905f:	b8 00 04 00 00       	mov    $0x400,%eax
409064:	75 05                	jne    0x40906b
409066:	b8 01 04 00 00       	mov    $0x401,%eax
40906b:	ff 75 fc             	push   -0x4(%ebp)
40906e:	68 ff 00 00 00       	push   $0xff
409073:	50                   	push   %eax
409074:	53                   	push   %ebx
409075:	56                   	push   %esi
409076:	ff 15 e8 b1 41 00    	call   *0x41b1e8
40907c:	0f bf 45 14          	movswl 0x14(%ebp),%eax
409080:	89 45 f0             	mov    %eax,-0x10(%ebp)
409083:	0f bf 45 16          	movswl 0x16(%ebp),%eax
409087:	89 45 f4             	mov    %eax,-0xc(%ebp)
40908a:	8d 45 f0             	lea    -0x10(%ebp),%eax
40908d:	50                   	push   %eax
40908e:	ff 75 08             	push   0x8(%ebp)
409091:	ff 15 ec b1 41 00    	call   *0x41b1ec
409097:	53                   	push   %ebx
409098:	ff 75 08             	push   0x8(%ebp)
40909b:	53                   	push   %ebx
40909c:	ff 75 f4             	push   -0xc(%ebp)
40909f:	ff 75 f0             	push   -0x10(%ebp)
4090a2:	53                   	push   %ebx
4090a3:	56                   	push   %esi
4090a4:	ff 15 f0 b1 41 00    	call   *0x41b1f0
4090aa:	56                   	push   %esi
4090ab:	ff 15 f4 b1 41 00    	call   *0x41b1f4
4090b1:	ff 75 fc             	push   -0x4(%ebp)
4090b4:	ff 15 24 b3 41 00    	call   *0x41b324
4090ba:	59                   	pop    %ecx
4090bb:	5e                   	pop    %esi
4090bc:	33 c0                	xor    %eax,%eax
4090be:	5b                   	pop    %ebx
4090bf:	c9                   	leave
4090c0:	c2 10 00             	ret    $0x10
4090c3:	8b ff                	mov    %edi,%edi
4090c5:	55                   	push   %ebp
4090c6:	8b ec                	mov    %esp,%ebp
4090c8:	83 ec 14             	sub    $0x14,%esp
4090cb:	53                   	push   %ebx
4090cc:	8b da                	mov    %edx,%ebx
4090ce:	8b c1                	mov    %ecx,%eax
4090d0:	89 5d ec             	mov    %ebx,-0x14(%ebp)
4090d3:	89 45 fc             	mov    %eax,-0x4(%ebp)
4090d6:	8d 53 ff             	lea    -0x1(%ebx),%edx
4090d9:	89 55 f0             	mov    %edx,-0x10(%ebp)
4090dc:	85 d2                	test   %edx,%edx
4090de:	74 77                	je     0x409157
4090e0:	56                   	push   %esi
4090e1:	33 f6                	xor    %esi,%esi
4090e3:	46                   	inc    %esi
4090e4:	57                   	push   %edi
4090e5:	89 75 f4             	mov    %esi,-0xc(%ebp)
4090e8:	8b f8                	mov    %eax,%edi
4090ea:	8b ce                	mov    %esi,%ecx
4090ec:	3b f3                	cmp    %ebx,%esi
4090ee:	73 56                	jae    0x409146
4090f0:	8b 75 fc             	mov    -0x4(%ebp),%esi
4090f3:	0f b7 17             	movzwl (%edi),%edx
4090f6:	33 c0                	xor    %eax,%eax
4090f8:	66 3b 14 45 90 3a 40 	cmp    0x403a90(,%eax,2),%dx
4090ff:	00
409100:	74 06                	je     0x409108
409102:	40                   	inc    %eax
409103:	83 f8 29             	cmp    $0x29,%eax
409106:	72 f0                	jb     0x4090f8
409108:	0f b7 1c 4e          	movzwl (%esi,%ecx,2),%ebx
40910c:	33 d2                	xor    %edx,%edx
40910e:	89 5d f8             	mov    %ebx,-0x8(%ebp)
409111:	8b 5d ec             	mov    -0x14(%ebp),%ebx
409114:	8b 75 f8             	mov    -0x8(%ebp),%esi
409117:	66 3b 34 55 90 3a 40 	cmp    0x403a90(,%edx,2),%si
40911e:	00
40911f:	74 06                	je     0x409127
409121:	42                   	inc    %edx
409122:	83 fa 29             	cmp    $0x29,%edx
409125:	72 f0                	jb     0x409117
409127:	8b 75 fc             	mov    -0x4(%ebp),%esi
40912a:	3b c2                	cmp    %edx,%eax
40912c:	76 0d                	jbe    0x40913b
40912e:	0f b7 07             	movzwl (%edi),%eax
409131:	8b 55 f8             	mov    -0x8(%ebp),%edx
409134:	66 89 17             	mov    %dx,(%edi)
409137:	66 89 04 4e          	mov    %ax,(%esi,%ecx,2)
40913b:	41                   	inc    %ecx
40913c:	3b cb                	cmp    %ebx,%ecx
40913e:	72 b3                	jb     0x4090f3
409140:	8b 75 f4             	mov    -0xc(%ebp),%esi
409143:	8b 55 f0             	mov    -0x10(%ebp),%edx
409146:	46                   	inc    %esi
409147:	83 c7 02             	add    $0x2,%edi
40914a:	83 ea 01             	sub    $0x1,%edx
40914d:	89 75 f4             	mov    %esi,-0xc(%ebp)
409150:	89 55 f0             	mov    %edx,-0x10(%ebp)
409153:	75 95                	jne    0x4090ea
409155:	5f                   	pop    %edi
409156:	5e                   	pop    %esi
409157:	5b                   	pop    %ebx
409158:	c9                   	leave
409159:	c3                   	ret
40915a:	cc                   	int3
40915b:	cc                   	int3
40915c:	cc                   	int3
40915d:	cc                   	int3
40915e:	cc                   	int3
40915f:	cc                   	int3
409160:	8b ff                	mov    %edi,%edi
409162:	55                   	push   %ebp
409163:	8b ec                	mov    %esp,%ebp
409165:	56                   	push   %esi
409166:	8b f1                	mov    %ecx,%esi
409168:	83 7e 0c 00          	cmpl   $0x0,0xc(%esi)
40916c:	c7 06 00 16 40 00    	movl   $0x401600,(%esi)
409172:	74 0d                	je     0x409181
409174:	ff 76 0c             	push   0xc(%esi)
409177:	ff 15 80 b0 41 00    	call   *0x41b080
40917d:	83 66 0c 00          	andl   $0x0,0xc(%esi)
409181:	8b 4e 14             	mov    0x14(%esi),%ecx
409184:	85 c9                	test   %ecx,%ecx
409186:	74 0a                	je     0x409192
409188:	51                   	push   %ecx
409189:	e8 26 00 00 00       	call   0x4091b4
40918e:	83 66 14 00          	andl   $0x0,0x14(%esi)
409192:	83 25 0c 98 41 00 00 	andl   $0x0,0x41980c
409199:	f6 45 08 01          	testb  $0x1,0x8(%ebp)
40919d:	c7 06 90 15 40 00    	movl   $0x401590,(%esi)
4091a3:	74 08                	je     0x4091ad
4091a5:	56                   	push   %esi
4091a6:	ff 15 cc b2 41 00    	call   *0x41b2cc
4091ac:	59                   	pop    %ecx
4091ad:	8b c6                	mov    %esi,%eax
4091af:	5e                   	pop    %esi
4091b0:	5d                   	pop    %ebp
4091b1:	c2 04 00             	ret    $0x4
4091b4:	8b ff                	mov    %edi,%edi
4091b6:	56                   	push   %esi
4091b7:	8b f1                	mov    %ecx,%esi
4091b9:	8b 86 44 01 00 00    	mov    0x144(%esi),%eax
4091bf:	85 c0                	test   %eax,%eax
4091c1:	74 0e                	je     0x4091d1