40adb1:	75 0d                	jne    0x40adc0
40adb3:	57                   	push   %edi
40adb4:	68 14 31 40 00       	push   $0x403114
40adb9:	68 e3 00 00 00       	push   $0xe3
40adbe:	eb d6                	jmp    0x40ad96
40adc0:	39 5c 24 20          	cmp    %ebx,0x20(%esp)
40adc4:	75 0d                	jne    0x40add3
40adc6:	57                   	push   %edi
40adc7:	68 14 31 40 00       	push   $0x403114
40adcc:	68 e4 00 00 00       	push   $0xe4
40add1:	eb c3                	jmp    0x40ad96
40add3:	c1 e0 02             	shl    $0x2,%eax
40add6:	50                   	push   %eax
40add7:	6a 08                	push   $0x8
40add9:	ff 15 e0 60 41 00    	call   *0x4160e0
40addf:	50                   	push   %eax
40ade0:	ff 15 dc 60 41 00    	call   *0x4160dc
40ade6:	8b d8                	mov    %eax,%ebx
40ade8:	85 db                	test   %ebx,%ebx
40adea:	75 17                	jne    0x40ae03
40adec:	b8 0e 00 07 80       	mov    $0x8007000e,%eax
40adf1:	50                   	push   %eax
40adf2:	68 14 31 40 00       	push   $0x403114
40adf7:	8b f0                	mov    %eax,%esi
40adf9:	68 e6 00 00 00       	push   $0xe6
40adfe:	e9 14 02 00 00       	jmp    0x40b017
40ae03:	21 74 24 2c          	and    %esi,0x2c(%esp)
40ae07:	33 c0                	xor    %eax,%eax
40ae09:	8b 7c 24 20          	mov    0x20(%esp),%edi
40ae0d:	89 44 24 14          	mov    %eax,0x14(%esp)
40ae11:	39 44 24 10          	cmp    %eax,0x10(%esp)
40ae15:	0f 86 1a 01 00 00    	jbe    0x40af35
40ae1b:	85 ff                	test   %edi,%edi
40ae1d:	0f 84 67 01 00 00    	je     0x40af8a
40ae23:	83 7c 24 18 00       	cmpl   $0x0,0x18(%esp)
40ae28:	74 0f                	je     0x40ae39
40ae2a:	ff 74 24 18          	push   0x18(%esp)
40ae2e:	ff 15 04 62 41 00    	call   *0x416204
40ae34:	83 64 24 18 00       	andl   $0x0,0x18(%esp)
40ae39:	83 7c 24 1c 00       	cmpl   $0x0,0x1c(%esp)
40ae3e:	74 0f                	je     0x40ae4f
40ae40:	ff 74 24 1c          	push   0x1c(%esp)
40ae44:	ff 15 04 62 41 00    	call   *0x416204
40ae4a:	83 64 24 1c 00       	andl   $0x0,0x1c(%esp)
40ae4f:	8b 07                	mov    (%edi),%eax
40ae51:	89 44 24 28          	mov    %eax,0x28(%esp)
40ae55:	3d 00 00 01 00       	cmp    $0x10000,%eax
40ae5a:	0f 84 bb 00 00 00    	je     0x40af1b
40ae60:	83 7f 08 04          	cmpl   $0x4,0x8(%edi)
40ae64:	0f 84 b1 00 00 00    	je     0x40af1b
40ae6a:	83 7f 08 05          	cmpl   $0x5,0x8(%edi)
40ae6e:	0f 84 a7 00 00 00    	je     0x40af1b
40ae74:	8d 4c 24 34          	lea    0x34(%esp),%ecx
40ae78:	51                   	push   %ecx
40ae79:	8d 4c 24 1c          	lea    0x1c(%esp),%ecx
40ae7d:	51                   	push   %ecx
40ae7e:	6a 05                	push   $0x5
40ae80:	50                   	push   %eax
40ae81:	6a 00                	push   $0x0
40ae83:	ff 15 00 62 41 00    	call   *0x416200
40ae89:	85 c0                	test   %eax,%eax
40ae8b:	0f 84 8a 00 00 00    	je     0x40af1b
40ae91:	8d 44 24 30          	lea    0x30(%esp),%eax
40ae95:	50                   	push   %eax
40ae96:	8d 44 24 20          	lea    0x20(%esp),%eax
40ae9a:	50                   	push   %eax
40ae9b:	6a 07                	push   $0x7
40ae9d:	ff 74 24 34          	push   0x34(%esp)
40aea1:	6a 00                	push   $0x0
40aea3:	ff 15 00 62 41 00    	call   *0x416200
40aea9:	85 c0                	test   %eax,%eax
40aeab:	74 6e                	je     0x40af1b
40aead:	68 a0 31 40 00       	push   $0x4031a0
40aeb2:	ff 74 24 1c          	push   0x1c(%esp)
40aeb6:	ff 15 d0 61 41 00    	call   *0x4161d0
40aebc:	85 c0                	test   %eax,%eax
40aebe:	74 5b                	je     0x40af1b
40aec0:	8b 4c 24 30          	mov    0x30(%esp),%ecx
40aec4:	8b 74 24 34          	mov    0x34(%esp),%esi
40aec8:	83 c1 23             	add    $0x23,%ecx
40aecb:	03 f1                	add    %ecx,%esi
40aecd:	8d 04 36             	lea    (%esi,%esi,1),%eax
40aed0:	50                   	push   %eax
40aed1:	6a 08                	push   $0x8
40aed3:	ff 15 e0 60 41 00    	call   *0x4160e0
40aed9:	50                   	push   %eax
40aeda:	ff 15 dc 60 41 00    	call   *0x4160dc
40aee0:	8b 4c 24 14          	mov    0x14(%esp),%ecx
40aee4:	89 04 8b             	mov    %eax,(%ebx,%ecx,4)
40aee7:	85 c0                	test   %eax,%eax
40aee9:	0f 84 84 00 00 00    	je     0x40af73
40aeef:	ff 74 24 28          	push   0x28(%esp)
40aef3:	ff 74 24 1c          	push   0x1c(%esp)
40aef7:	ff 74 24 24          	push   0x24(%esp)
40aefb:	68 8c 31 40 00       	push   $0x40318c
40af00:	56                   	push   %esi
40af01:	50                   	push   %eax
40af02:	e8 cb 01 00 00       	call   0x40b0d2
40af07:	8b f0                	mov    %eax,%esi
40af09:	83 c4 18             	add    $0x18,%esp
40af0c:	85 f6                	test   %esi,%esi
40af0e:	78 53                	js     0x40af63
40af10:	8b 44 24 14          	mov    0x14(%esp),%eax
40af14:	40                   	inc    %eax
40af15:	89 44 24 14          	mov    %eax,0x14(%esp)
40af19:	eb 04                	jmp    0x40af1f
40af1b:	8b 44 24 14          	mov    0x14(%esp),%eax
40af1f:	8b 4c 24 2c          	mov    0x2c(%esp),%ecx
40af23:	83 c7 0c             	add    $0xc,%edi
40af26:	41                   	inc    %ecx
40af27:	89 4c 24 2c          	mov    %ecx,0x2c(%esp)
40af2b:	3b 4c 24 10          	cmp    0x10(%esp),%ecx
40af2f:	0f 82 e6 fe ff ff    	jb     0x40ae1b
40af35:	50                   	push   %eax
40af36:	6a 00                	push   $0x0
40af38:	6a 08                	push   $0x8
40af3a:	89 44 24 1c          	mov    %eax,0x1c(%esp)
40af3e:	ff 15 98 61 41 00    	call   *0x416198
40af44:	89 44 24 34          	mov    %eax,0x34(%esp)
40af48:	85 c0                	test   %eax,%eax
40af4a:	75 52                	jne    0x40af9e
40af4c:	b8 0e 00 07 80       	mov    $0x8007000e,%eax
40af51:	50                   	push   %eax
40af52:	68 14 31 40 00       	push   $0x403114
40af57:	8b f0                	mov    %eax,%esi
40af59:	68 55 01 00 00       	push   $0x155
40af5e:	e9 b4 00 00 00       	jmp    0x40b017
40af63:	56                   	push   %esi
40af64:	68 14 31 40 00       	push   $0x403114
40af69:	68 45 01 00 00       	push   $0x145
40af6e:	e9 a4 00 00 00       	jmp    0x40b017
40af73:	b8 0e 00 07 80       	mov    $0x8007000e,%eax
40af78:	50                   	push   %eax
40af79:	68 14 31 40 00       	push   $0x403114
40af7e:	8b f0                	mov    %eax,%esi
40af80:	68 3d 01 00 00       	push   $0x13d
40af85:	e9 8d 00 00 00       	jmp    0x40b017
40af8a:	b8 0e 00 07 80       	mov    $0x8007000e,%eax
40af8f:	50                   	push   %eax
40af90:	68 14 31 40 00       	push   $0x403114
40af95:	8b f0                	mov    %eax,%esi
40af97:	68 f3 00 00 00       	push   $0xf3
40af9c:	eb 79                	jmp    0x40b017
40af9e:	8d 4c 24 24          	lea    0x24(%esp),%ecx
40afa2:	51                   	push   %ecx
40afa3:	50                   	push   %eax
40afa4:	ff 15 94 61 41 00    	call   *0x416194
40afaa:	33 ff                	xor    %edi,%edi
40afac:	39 7c 24 10          	cmp    %edi,0x10(%esp)
40afb0:	76 21                	jbe    0x40afd3
40afb2:	ff 34 bb             	push   (%ebx,%edi,4)
40afb5:	ff 15 a4 61 41 00    	call   *0x4161a4
40afbb:	8b 4c 24 24          	mov    0x24(%esp),%ecx
40afbf:	89 04 b9             	mov    %eax,(%ecx,%edi,4)
40afc2:	8b 44 24 24          	mov    0x24(%esp),%eax
40afc6:	83 3c b8 00          	cmpl   $0x0,(%eax,%edi,4)
40afca:	74 27                	je     0x40aff3
40afcc:	47                   	inc    %edi
40afcd:	3b 7c 24 10          	cmp    0x10(%esp),%edi
40afd1:	72 df                	jb     0x40afb2
40afd3:	8b 7c 24 34          	mov    0x34(%esp),%edi
40afd7:	57                   	push   %edi
40afd8:	ff 15 90 61 41 00    	call   *0x416190
40afde:	8b 45 0c             	mov    0xc(%ebp),%eax
40afe1:	8b 4d 10             	mov    0x10(%ebp),%ecx
40afe4:	83 64 24 24 00       	andl   $0x0,0x24(%esp)
40afe9:	89 38                	mov    %edi,(%eax)
40afeb:	8b 44 24 10          	mov    0x10(%esp),%eax
40afef:	89 01                	mov    %eax,(%ecx)
40aff1:	eb 2f                	jmp    0x40b022
40aff3:	b8 0e 00 07 80       	mov    $0x8007000e,%eax
40aff8:	50                   	push   %eax
40aff9:	68 14 31 40 00       	push   $0x403114
40affe:	8b f0                	mov    %eax,%esi
40b000:	68 5c 01 00 00       	push   $0x15c
40b005:	eb 10                	jmp    0x40b017
40b007:	be 05 40 00 80       	mov    $0x80004005,%esi
40b00c:	56                   	push   %esi
40b00d:	68 14 31 40 00       	push   $0x403114
40b012:	68 d4 00 00 00       	push   $0xd4
40b017:	68 78 30 40 00       	push   $0x403078
40b01c:	51                   	push   %ecx
40b01d:	e8 b0 5f 00 00       	call   0x410fd2
40b022:	33 ff                	xor    %edi,%edi
40b024:	39 7c 24 10          	cmp    %edi,0x10(%esp)
40b028:	76 27                	jbe    0x40b051
40b02a:	85 db                	test   %ebx,%ebx
40b02c:	74 1c                	je     0x40b04a
40b02e:	83 3c bb 00          	cmpl   $0x0,(%ebx,%edi,4)
40b032:	74 16                	je     0x40b04a
40b034:	ff 34 bb             	push   (%ebx,%edi,4)
40b037:	6a 00                	push   $0x0
40b039:	ff 15 e0 60 41 00    	call   *0x4160e0
40b03f:	50                   	push   %eax
40b040:	ff 15 e4 60 41 00    	call   *0x4160e4
40b046:	83 24 bb 00          	andl   $0x0,(%ebx,%edi,4)
40b04a:	47                   	inc    %edi
40b04b:	3b 7c 24 10          	cmp    0x10(%esp),%edi
40b04f:	72 d9                	jb     0x40b02a
40b051:	33 ff                	xor    %edi,%edi
40b053:	85 db                	test   %ebx,%ebx
40b055:	74 0f                	je     0x40b066
40b057:	53                   	push   %ebx
40b058:	57                   	push   %edi
40b059:	ff 15 e0 60 41 00    	call   *0x4160e0
40b05f:	50                   	push   %eax
40b060:	ff 15 e4 60 41 00    	call   *0x4160e4
40b066:	83 7c 24 18 00       	cmpl   $0x0,0x18(%esp)
40b06b:	74 0e                	je     0x40b07b
40b06d:	ff 74 24 18          	push   0x18(%esp)
40b071:	ff 15 04 62 41 00    	call   *0x416204
40b077:	89 7c 24 18          	mov    %edi,0x18(%esp)
40b07b:	83 7c 24 1c 00       	cmpl   $0x0,0x1c(%esp)
40b080:	74 0e                	je     0x40b090
40b082:	ff 74 24 1c          	push   0x1c(%esp)
40b086:	ff 15 04 62 41 00    	call   *0x416204
40b08c:	89 7c 24 1c          	mov    %edi,0x1c(%esp)
40b090:	83 7c 24 20 00       	cmpl   $0x0,0x20(%esp)
40b095:	74 0e                	je     0x40b0a5
40b097:	ff 74 24 20          	push   0x20(%esp)
40b09b:	ff 15 04 62 41 00    	call   *0x416204
40b0a1:	89 7c 24 20          	mov    %edi,0x20(%esp)
40b0a5:	85 f6                	test   %esi,%esi
40b0a7:	79 17                	jns    0x40b0c0
40b0a9:	8b 5d 0c             	mov    0xc(%ebp),%ebx
40b0ac:	83 3b 00             	cmpl   $0x0,(%ebx)
40b0af:	74 0a                	je     0x40b0bb
40b0b1:	ff 33                	push   (%ebx)
40b0b3:	ff 15 8c 61 41 00    	call   *0x41618c
40b0b9:	89 3b                	mov    %edi,(%ebx)
40b0bb:	8b 45 10             	mov    0x10(%ebp),%eax
40b0be:	89 38                	mov    %edi,(%eax)
40b0c0:	57                   	push   %edi
40b0c1:	ff 15 b8 61 41 00    	call   *0x4161b8
40b0c7:	5f                   	pop    %edi
40b0c8:	8b c6                	mov    %esi,%eax
40b0ca:	5e                   	pop    %esi
40b0cb:	5b                   	pop    %ebx
40b0cc:	8b e5                	mov    %ebp,%esp
40b0ce:	5d                   	pop    %ebp
40b0cf:	c2 0c 00             	ret    $0xc
40b0d2:	8b ff                	mov    %edi,%edi
40b0d4:	55                   	push   %ebp
40b0d5:	8b ec                	mov    %esp,%ebp
40b0d7:	8b 45 0c             	mov    0xc(%ebp),%eax
40b0da:	56                   	push   %esi
40b0db:	33 f6                	xor    %esi,%esi
40b0dd:	85 c0                	test   %eax,%eax
40b0df:	74 07                	je     0x40b0e8
40b0e1:	3d ff ff ff 7f       	cmp    $0x7fffffff,%eax
40b0e6:	76 05                	jbe    0x40b0ed
40b0e8:	be 57 00 07 80       	mov    $0x80070057,%esi
40b0ed:	85 f6                	test   %esi,%esi
40b0ef:	78 37                	js     0x40b128
40b0f1:	53                   	push   %ebx
40b0f2:	8b 5d 08             	mov    0x8(%ebp),%ebx
40b0f5:	33 f6                	xor    %esi,%esi
40b0f7:	57                   	push   %edi
40b0f8:	8d 78 ff             	lea    -0x1(%eax),%edi
40b0fb:	8d 45 14             	lea    0x14(%ebp),%eax
40b0fe:	50                   	push   %eax
40b0ff:	ff 75 10             	push   0x10(%ebp)
40b102:	57                   	push   %edi
40b103:	53                   	push   %ebx
40b104:	ff 15 a8 62 41 00    	call   *0x4162a8
40b10a:	83 c4 10             	add    $0x10,%esp
40b10d:	85 c0                	test   %eax,%eax
40b10f:	78 08                	js     0x40b119
40b111:	3b c7                	cmp    %edi,%eax
40b113:	77 04                	ja     0x40b119
40b115:	75 0d                	jne    0x40b124
40b117:	eb 05                	jmp    0x40b11e
40b119:	be 7a 00 07 80       	mov    $0x8007007a,%esi
40b11e:	33 c0                	xor    %eax,%eax
40b120:	66 89 04 7b          	mov    %ax,(%ebx,%edi,2)
40b124:	5f                   	pop    %edi
40b125:	5b                   	pop    %ebx
40b126:	eb 0c                	jmp    0x40b134
40b128:	85 c0                	test   %eax,%eax
40b12a:	74 08                	je     0x40b134
40b12c:	8b 4d 08             	mov    0x8(%ebp),%ecx
40b12f:	33 c0                	xor    %eax,%eax
40b131:	66 89 01             	mov    %ax,(%ecx)
40b134:	8b c6                	mov    %esi,%eax
40b136:	5e                   	pop    %esi
40b137:	5d                   	pop    %ebp
40b138:	c3                   	ret
40b139:	8b ff                	mov    %edi,%edi
40b13b:	55                   	push   %ebp
40b13c:	8b ec                	mov    %esp,%ebp
40b13e:	8b 55 08             	mov    0x8(%ebp),%edx
40b141:	53                   	push   %ebx
40b142:	33 db                	xor    %ebx,%ebx
40b144:	85 c9                	test   %ecx,%ecx
40b146:	74 3a                	je     0x40b182
40b148:	56                   	push   %esi
40b149:	57                   	push   %edi
40b14a:	bf ff ff ff 7f       	mov    $0x7fffffff,%edi
40b14f:	8b f7                	mov    %edi,%esi
40b151:	66 39 19             	cmp    %bx,(%ecx)
40b154:	74 08                	je     0x40b15e
40b156:	83 c1 02             	add    $0x2,%ecx
40b159:	83 ee 01             	sub    $0x1,%esi
40b15c:	75 f3                	jne    0x40b151
40b15e:	8b c6                	mov    %esi,%eax
40b160:	f7 d8                	neg    %eax
40b162:	1b c0                	sbb    %eax,%eax
40b164:	25 a9 ff f8 7f       	and    $0x7ff8ffa9,%eax
40b169:	05 57 00 07 80       	add    $0x80070057,%eax
40b16e:	85 d2                	test   %edx,%edx
40b170:	74 0c                	je     0x40b17e
40b172:	85 f6                	test   %esi,%esi
40b174:	74 06                	je     0x40b17c
40b176:	2b fe                	sub    %esi,%edi
40b178:	89 3a                	mov    %edi,(%edx)
40b17a:	eb 02                	jmp    0x40b17e
40b17c:	89 1a                	mov    %ebx,(%edx)
40b17e:	5f                   	pop    %edi
40b17f:	5e                   	pop    %esi
40b180:	eb 05                	jmp    0x40b187
40b182:	b8 57 00 07 80       	mov    $0x80070057,%eax
40b187:	85 c0                	test   %eax,%eax
40b189:	79 06                	jns    0x40b191
40b18b:	85 d2                	test   %edx,%edx
40b18d:	74 02                	je     0x40b191
40b18f:	89 1a                	mov    %ebx,(%edx)
40b191:	5b                   	pop    %ebx
40b192:	5d                   	pop    %ebp
40b193:	c2 04 00             	ret    $0x4
40b196:	8b ff                	mov    %edi,%edi
40b198:	55                   	push   %ebp
40b199:	8b ec                	mov    %esp,%ebp
40b19b:	83 e4 f8             	and    $0xfffffff8,%esp
40b19e:	83 ec 0c             	sub    $0xc,%esp
40b1a1:	53                   	push   %ebx
40b1a2:	56                   	push   %esi
40b1a3:	57                   	push   %edi
40b1a4:	bb 08 02 00 00       	mov    $0x208,%ebx
40b1a9:	89 54 24 14          	mov    %edx,0x14(%esp)
40b1ad:	53                   	push   %ebx
40b1ae:	6a 08                	push   $0x8
40b1b0:	89 4c 24 18          	mov    %ecx,0x18(%esp)
40b1b4:	33 f6                	xor    %esi,%esi
40b1b6:	ff 15 e0 60 41 00    	call   *0x4160e0
40b1bc:	50                   	push   %eax
40b1bd:	ff 15 dc 60 41 00    	call   *0x4160dc
40b1c3:	8b f8                	mov    %eax,%edi
40b1c5:	85 ff                	test   %edi,%edi
40b1c7:	75 1f                	jne    0x40b1e8
40b1c9:	b8 0e 00 07 80       	mov    $0x8007000e,%eax