402f17:	c2 20 00             	ret    $0x20
402f1a:	cc                   	int3
402f1b:	cc                   	int3
402f1c:	cc                   	int3
402f1d:	cc                   	int3
402f1e:	cc                   	int3
402f1f:	cc                   	int3
402f20:	56                   	push   %esi
402f21:	8d 71 fc             	lea    -0x4(%ecx),%esi
402f24:	8b 0e                	mov    (%esi),%ecx
402f26:	8b 51 04             	mov    0x4(%ecx),%edx
402f29:	8d 46 04             	lea    0x4(%esi),%eax
402f2c:	c7 44 02 fc 90 8a 42 	movl   $0x428a90,-0x4(%edx,%eax,1)
402f33:	00
402f34:	50                   	push   %eax
402f35:	c7 00 3c 8a 42 00    	movl   $0x428a3c,(%eax)
402f3b:	e8 d3 13 00 00       	call   0x404313
402f40:	83 c4 04             	add    $0x4,%esp
402f43:	f6 44 24 08 01       	testb  $0x1,0x8(%esp)
402f48:	74 09                	je     0x402f53
402f4a:	56                   	push   %esi
402f4b:	e8 e6 23 00 00       	call   0x405336
402f50:	83 c4 04             	add    $0x4,%esp
402f53:	8b c6                	mov    %esi,%eax
402f55:	5e                   	pop    %esi
402f56:	c2 04 00             	ret    $0x4
402f59:	cc                   	int3
402f5a:	cc                   	int3
402f5b:	cc                   	int3
402f5c:	cc                   	int3
402f5d:	cc                   	int3
402f5e:	cc                   	int3
402f5f:	cc                   	int3
402f60:	56                   	push   %esi
402f61:	8b f1                	mov    %ecx,%esi
402f63:	56                   	push   %esi
402f64:	c7 06 3c 8a 42 00    	movl   $0x428a3c,(%esi)
402f6a:	e8 a4 13 00 00       	call   0x404313
402f6f:	83 c4 04             	add    $0x4,%esp
402f72:	f6 44 24 08 01       	testb  $0x1,0x8(%esp)
402f77:	74 09                	je     0x402f82
402f79:	56                   	push   %esi
402f7a:	e8 b7 23 00 00       	call   0x405336
402f7f:	83 c4 04             	add    $0x4,%esp
402f82:	8b c6                	mov    %esi,%eax
402f84:	5e                   	pop    %esi
402f85:	c2 04 00             	ret    $0x4
402f88:	cc                   	int3
402f89:	cc                   	int3
402f8a:	cc                   	int3
402f8b:	cc                   	int3
402f8c:	cc                   	int3
402f8d:	cc                   	int3
402f8e:	cc                   	int3
402f8f:	cc                   	int3
402f90:	51                   	push   %ecx
402f91:	53                   	push   %ebx
402f92:	8b d9                	mov    %ecx,%ebx
402f94:	57                   	push   %edi
402f95:	8b 3b                	mov    (%ebx),%edi
402f97:	85 ff                	test   %edi,%edi
402f99:	74 3f                	je     0x402fda
402f9b:	6a 00                	push   $0x0
402f9d:	8d 4c 24 0c          	lea    0xc(%esp),%ecx
402fa1:	e8 68 17 00 00       	call   0x40470e
402fa6:	8b 47 04             	mov    0x4(%edi),%eax
402fa9:	85 c0                	test   %eax,%eax
402fab:	76 09                	jbe    0x402fb6
402fad:	83 f8 ff             	cmp    $0xffffffff,%eax
402fb0:	73 04                	jae    0x402fb6
402fb2:	48                   	dec    %eax
402fb3:	89 47 04             	mov    %eax,0x4(%edi)
402fb6:	56                   	push   %esi
402fb7:	8b 77 04             	mov    0x4(%edi),%esi
402fba:	f7 de                	neg    %esi
402fbc:	1b f6                	sbb    %esi,%esi
402fbe:	f7 d6                	not    %esi
402fc0:	8d 4c 24 0c          	lea    0xc(%esp),%ecx
402fc4:	23 f7                	and    %edi,%esi
402fc6:	e8 6b 17 00 00       	call   0x404736
402fcb:	85 f6                	test   %esi,%esi
402fcd:	74 0a                	je     0x402fd9
402fcf:	8b 06                	mov    (%esi),%eax
402fd1:	8b 10                	mov    (%eax),%edx
402fd3:	6a 01                	push   $0x1
402fd5:	8b ce                	mov    %esi,%ecx
402fd7:	ff d2                	call   *%edx
402fd9:	5e                   	pop    %esi
402fda:	f6 44 24 10 01       	testb  $0x1,0x10(%esp)
402fdf:	74 09                	je     0x402fea
402fe1:	53                   	push   %ebx
402fe2:	e8 4f 23 00 00       	call   0x405336
402fe7:	83 c4 04             	add    $0x4,%esp
402fea:	5f                   	pop    %edi
402feb:	8b c3                	mov    %ebx,%eax
402fed:	5b                   	pop    %ebx
402fee:	59                   	pop    %ecx
402fef:	c2 04 00             	ret    $0x4
402ff2:	cc                   	int3
402ff3:	cc                   	int3
402ff4:	cc                   	int3
402ff5:	cc                   	int3
402ff6:	cc                   	int3
402ff7:	cc                   	int3
402ff8:	cc                   	int3
402ff9:	cc                   	int3
402ffa:	cc                   	int3
402ffb:	cc                   	int3
402ffc:	cc                   	int3
402ffd:	cc                   	int3
402ffe:	cc                   	int3
402fff:	cc                   	int3
403000:	56                   	push   %esi
403001:	8d 71 f8             	lea    -0x8(%ecx),%esi
403004:	8b 0e                	mov    (%esi),%ecx
403006:	8b 51 04             	mov    0x4(%ecx),%edx
403009:	8d 46 08             	lea    0x8(%esi),%eax
40300c:	c7 44 02 f8 88 8a 42 	movl   $0x428a88,-0x8(%edx,%eax,1)
403013:	00
403014:	50                   	push   %eax
403015:	c7 00 3c 8a 42 00    	movl   $0x428a3c,(%eax)
40301b:	e8 f3 12 00 00       	call   0x404313
403020:	83 c4 04             	add    $0x4,%esp
403023:	f6 44 24 08 01       	testb  $0x1,0x8(%esp)
403028:	74 09                	je     0x403033
40302a:	56                   	push   %esi
40302b:	e8 06 23 00 00       	call   0x405336
403030:	83 c4 04             	add    $0x4,%esp
403033:	8b c6                	mov    %esi,%eax
403035:	5e                   	pop    %esi
403036:	c2 04 00             	ret    $0x4
403039:	cc                   	int3
40303a:	cc                   	int3
40303b:	cc                   	int3
40303c:	cc                   	int3
40303d:	cc                   	int3
40303e:	cc                   	int3
40303f:	cc                   	int3
403040:	56                   	push   %esi
403041:	8b f1                	mov    %ecx,%esi
403043:	e8 28 f4 ff ff       	call   0x402470
403048:	f6 44 24 08 01       	testb  $0x1,0x8(%esp)
40304d:	74 09                	je     0x403058
40304f:	56                   	push   %esi
403050:	e8 e1 22 00 00       	call   0x405336
403055:	83 c4 04             	add    $0x4,%esp
403058:	8b c6                	mov    %esi,%eax
40305a:	5e                   	pop    %esi
40305b:	c2 04 00             	ret    $0x4
40305e:	cc                   	int3
40305f:	cc                   	int3
403060:	8b 08                	mov    (%eax),%ecx
403062:	51                   	push   %ecx
403063:	e8 ce 22 00 00       	call   0x405336
403068:	59                   	pop    %ecx
403069:	c3                   	ret
40306a:	cc                   	int3
40306b:	cc                   	int3
40306c:	cc                   	int3
40306d:	cc                   	int3
40306e:	cc                   	int3
40306f:	cc                   	int3
403070:	56                   	push   %esi
403071:	57                   	push   %edi
403072:	8d 79 ac             	lea    -0x54(%ecx),%edi
403075:	8d 77 54             	lea    0x54(%edi),%esi
403078:	8b ce                	mov    %esi,%ecx
40307a:	e8 61 f8 ff ff       	call   0x4028e0
40307f:	56                   	push   %esi
403080:	c7 06 3c 8a 42 00    	movl   $0x428a3c,(%esi)
403086:	e8 88 12 00 00       	call   0x404313
40308b:	83 c4 04             	add    $0x4,%esp
40308e:	f6 44 24 0c 01       	testb  $0x1,0xc(%esp)
403093:	74 09                	je     0x40309e
403095:	57                   	push   %edi
403096:	e8 9b 22 00 00       	call   0x405336
40309b:	83 c4 04             	add    $0x4,%esp
40309e:	8b c7                	mov    %edi,%eax
4030a0:	5f                   	pop    %edi
4030a1:	5e                   	pop    %esi
4030a2:	c2 04 00             	ret    $0x4
4030a5:	cc                   	int3
4030a6:	cc                   	int3
4030a7:	cc                   	int3
4030a8:	cc                   	int3
4030a9:	cc                   	int3
4030aa:	cc                   	int3
4030ab:	cc                   	int3
4030ac:	cc                   	int3
4030ad:	cc                   	int3
4030ae:	cc                   	int3
4030af:	cc                   	int3
4030b0:	56                   	push   %esi
4030b1:	8d 71 f4             	lea    -0xc(%ecx),%esi
4030b4:	8b 0e                	mov    (%esi),%ecx
4030b6:	8b 51 04             	mov    0x4(%ecx),%edx
4030b9:	8d 46 0c             	lea    0xc(%esi),%eax
4030bc:	c7 44 02 f4 98 8a 42 	movl   $0x428a98,-0xc(%edx,%eax,1)
4030c3:	00
4030c4:	8b 48 fc             	mov    -0x4(%eax),%ecx
4030c7:	8b 51 04             	mov    0x4(%ecx),%edx
4030ca:	c7 44 02 fc 90 8a 42 	movl   $0x428a90,-0x4(%edx,%eax,1)
4030d1:	00
4030d2:	8b 48 f4             	mov    -0xc(%eax),%ecx
4030d5:	8b 51 04             	mov    0x4(%ecx),%edx
4030d8:	c7 44 02 f4 88 8a 42 	movl   $0x428a88,-0xc(%edx,%eax,1)
4030df:	00
4030e0:	50                   	push   %eax
4030e1:	c7 00 3c 8a 42 00    	movl   $0x428a3c,(%eax)
4030e7:	e8 27 12 00 00       	call   0x404313
4030ec:	83 c4 04             	add    $0x4,%esp
4030ef:	f6 44 24 08 01       	testb  $0x1,0x8(%esp)
4030f4:	74 09                	je     0x4030ff
4030f6:	56                   	push   %esi
4030f7:	e8 3a 22 00 00       	call   0x405336
4030fc:	83 c4 04             	add    $0x4,%esp
4030ff:	8b c6                	mov    %esi,%eax
403101:	5e                   	pop    %esi
403102:	c2 04 00             	ret    $0x4
403105:	cc                   	int3
403106:	cc                   	int3
403107:	cc                   	int3
403108:	cc                   	int3
403109:	cc                   	int3
40310a:	cc                   	int3
40310b:	cc                   	int3
40310c:	cc                   	int3
40310d:	cc                   	int3
40310e:	cc                   	int3
40310f:	cc                   	int3
403110:	56                   	push   %esi
403111:	8b f1                	mov    %ecx,%esi
403113:	e8 78 f8 ff ff       	call   0x402990
403118:	f6 44 24 08 01       	testb  $0x1,0x8(%esp)
40311d:	74 09                	je     0x403128
40311f:	56                   	push   %esi
403120:	e8 11 22 00 00       	call   0x405336
403125:	83 c4 04             	add    $0x4,%esp
403128:	8b c6                	mov    %esi,%eax
40312a:	5e                   	pop    %esi
40312b:	c2 04 00             	ret    $0x4
40312e:	cc                   	int3
40312f:	cc                   	int3
403130:	53                   	push   %ebx
403131:	8b 5c 24 08          	mov    0x8(%esp),%ebx
403135:	55                   	push   %ebp
403136:	8b 6c 24 10          	mov    0x10(%esp),%ebp
40313a:	56                   	push   %esi
40313b:	57                   	push   %edi
40313c:	8b f1                	mov    %ecx,%esi
40313e:	39 6b 14             	cmp    %ebp,0x14(%ebx)
403141:	73 05                	jae    0x403148
403143:	e8 8c 16 00 00       	call   0x4047d4
403148:	8b 7b 14             	mov    0x14(%ebx),%edi
40314b:	8b 44 24 1c          	mov    0x1c(%esp),%eax
40314f:	2b fd                	sub    %ebp,%edi
403151:	3b c7                	cmp    %edi,%eax
403153:	73 02                	jae    0x403157
403155:	8b f8                	mov    %eax,%edi
403157:	3b f3                	cmp    %ebx,%esi
403159:	75 1f                	jne    0x40317a
40315b:	6a ff                	push   $0xffffffff
40315d:	03 fd                	add    %ebp,%edi
40315f:	57                   	push   %edi
403160:	8b ce                	mov    %esi,%ecx
403162:	e8 89 03 00 00       	call   0x4034f0
403167:	55                   	push   %ebp
403168:	6a 00                	push   $0x0
40316a:	8b ce                	mov    %esi,%ecx
40316c:	e8 7f 03 00 00       	call   0x4034f0
403171:	5f                   	pop    %edi
403172:	8b c6                	mov    %esi,%eax
403174:	5e                   	pop    %esi
403175:	5d                   	pop    %ebp
403176:	5b                   	pop    %ebx
403177:	c2 0c 00             	ret    $0xc
40317a:	83 ff fe             	cmp    $0xfffffffe,%edi
40317d:	76 05                	jbe    0x403184
40317f:	e8 18 16 00 00       	call   0x40479c
403184:	8b 46 18             	mov    0x18(%esi),%eax
403187:	3b c7                	cmp    %edi,%eax
403189:	73 1b                	jae    0x4031a6
40318b:	8b 46 14             	mov    0x14(%esi),%eax
40318e:	50                   	push   %eax
40318f:	57                   	push   %edi
403190:	8b ce                	mov    %esi,%ecx
403192:	e8 69 09 00 00       	call   0x403b00
403197:	85 ff                	test   %edi,%edi
403199:	76 66                	jbe    0x403201
40319b:	83 7b 18 10          	cmpl   $0x10,0x18(%ebx)
40319f:	72 2f                	jb     0x4031d0
4031a1:	8b 53 04             	mov    0x4(%ebx),%edx
4031a4:	eb 2d                	jmp    0x4031d3
4031a6:	85 ff                	test   %edi,%edi
4031a8:	75 ef                	jne    0x403199
4031aa:	89 7e 14             	mov    %edi,0x14(%esi)
4031ad:	83 f8 10             	cmp    $0x10,%eax
4031b0:	72 0f                	jb     0x4031c1
4031b2:	8b 46 04             	mov    0x4(%esi),%eax
4031b5:	5f                   	pop    %edi
4031b6:	c6 00 00             	movb   $0x0,(%eax)
4031b9:	8b c6                	mov    %esi,%eax
4031bb:	5e                   	pop    %esi
4031bc:	5d                   	pop    %ebp
4031bd:	5b                   	pop    %ebx
4031be:	c2 0c 00             	ret    $0xc
4031c1:	8d 46 04             	lea    0x4(%esi),%eax
4031c4:	5f                   	pop    %edi
4031c5:	c6 00 00             	movb   $0x0,(%eax)
4031c8:	8b c6                	mov    %esi,%eax
4031ca:	5e                   	pop    %esi
4031cb:	5d                   	pop    %ebp
4031cc:	5b                   	pop    %ebx
4031cd:	c2 0c 00             	ret    $0xc
4031d0:	8d 53 04             	lea    0x4(%ebx),%edx
4031d3:	8b 4e 18             	mov    0x18(%esi),%ecx
4031d6:	8d 5e 04             	lea    0x4(%esi),%ebx
4031d9:	83 f9 10             	cmp    $0x10,%ecx
4031dc:	72 04                	jb     0x4031e2
4031de:	8b 03                	mov    (%ebx),%eax
4031e0:	eb 02                	jmp    0x4031e4
4031e2:	8b c3                	mov    %ebx,%eax
4031e4:	57                   	push   %edi
4031e5:	03 d5                	add    %ebp,%edx
4031e7:	52                   	push   %edx
4031e8:	51                   	push   %ecx
4031e9:	50                   	push   %eax
4031ea:	e8 a7 22 00 00       	call   0x405496
4031ef:	83 c4 10             	add    $0x10,%esp
4031f2:	83 7e 18 10          	cmpl   $0x10,0x18(%esi)
4031f6:	89 7e 14             	mov    %edi,0x14(%esi)
4031f9:	72 02                	jb     0x4031fd
4031fb:	8b 1b                	mov    (%ebx),%ebx
4031fd:	c6 04 3b 00          	movb   $0x0,(%ebx,%edi,1)
403201:	5f                   	pop    %edi
403202:	8b c6                	mov    %esi,%eax
403204:	5e                   	pop    %esi
403205:	5d                   	pop    %ebp
403206:	5b                   	pop    %ebx
403207:	c2 0c 00             	ret    $0xc
40320a:	cc                   	int3
40320b:	cc                   	int3
40320c:	cc                   	int3
40320d:	cc                   	int3
40320e:	cc                   	int3
40320f:	cc                   	int3
403210:	56                   	push   %esi
403211:	8b 74 24 08          	mov    0x8(%esp),%esi
403215:	8b c6                	mov    %esi,%eax
403217:	57                   	push   %edi