40714d:	99                   	cltd
40714e:	39 54 24 18          	cmp    %edx,0x18(%esp)
407152:	0f 87 ac 00 00 00    	ja     0x407204
407158:	72 08                	jb     0x407162
40715a:	3b d8                	cmp    %eax,%ebx
40715c:	0f 87 a2 00 00 00    	ja     0x407204
407162:	8b 55 24             	mov    0x24(%ebp),%edx
407165:	8b c3                	mov    %ebx,%eax
407167:	0b 44 24 18          	or     0x18(%esp),%eax
40716b:	74 19                	je     0x407186
40716d:	f6 c2 01             	test   $0x1,%dl
407170:	74 0b                	je     0x40717d
407172:	83 7c 24 1c 00       	cmpl   $0x0,0x1c(%esp)
407177:	0f 84 87 00 00 00    	je     0x407204
40717d:	f6 c2 02             	test   $0x2,%dl
407180:	74 04                	je     0x407186
407182:	85 c9                	test   %ecx,%ecx
407184:	74 7e                	je     0x407204
407186:	f6 c2 01             	test   $0x1,%dl
407189:	74 38                	je     0x4071c3
40718b:	83 7c 24 1c 00       	cmpl   $0x0,0x1c(%esp)
407190:	74 31                	je     0x4071c3
407192:	8b 57 0c             	mov    0xc(%edi),%edx
407195:	8b 44 24 10          	mov    0x10(%esp),%eax
407199:	8b 74 24 10          	mov    0x10(%esp),%esi
40719d:	89 02                	mov    %eax,(%edx)
40719f:	8b 47 1c             	mov    0x1c(%edi),%eax
4071a2:	8d 14 5e             	lea    (%esi,%ebx,2),%edx
4071a5:	8b 74 24 20          	mov    0x20(%esp),%esi
4071a9:	89 10                	mov    %edx,(%eax)
4071ab:	8b 44 24 14          	mov    0x14(%esp),%eax
4071af:	2b c2                	sub    %edx,%eax
4071b1:	d1 f8                	sar    $1,%eax
4071b3:	89 44 24 14          	mov    %eax,0x14(%esp)
4071b7:	8b 47 2c             	mov    0x2c(%edi),%eax
4071ba:	8b 54 24 14          	mov    0x14(%esp),%edx
4071be:	89 10                	mov    %edx,(%eax)
4071c0:	8b 55 24             	mov    0x24(%ebp),%edx
4071c3:	f6 c2 02             	test   $0x2,%dl
4071c6:	74 31                	je     0x4071f9
4071c8:	85 c9                	test   %ecx,%ecx
4071ca:	74 2d                	je     0x4071f9
4071cc:	8b 47 30             	mov    0x30(%edi),%eax
4071cf:	8b 54 24 10          	mov    0x10(%esp),%edx
4071d3:	8b f2                	mov    %edx,%esi
4071d5:	8b 08                	mov    (%eax),%ecx
4071d7:	8b 47 20             	mov    0x20(%edi),%eax
4071da:	8b 00                	mov    (%eax),%eax
4071dc:	8d 0c 48             	lea    (%eax,%ecx,2),%ecx
4071df:	8b 47 10             	mov    0x10(%edi),%eax
4071e2:	89 10                	mov    %edx,(%eax)
4071e4:	8d 14 5e             	lea    (%esi,%ebx,2),%edx
4071e7:	8b 47 20             	mov    0x20(%edi),%eax
4071ea:	2b ca                	sub    %edx,%ecx
4071ec:	8b 74 24 20          	mov    0x20(%esp),%esi
4071f0:	d1 f9                	sar    $1,%ecx
4071f2:	89 10                	mov    %edx,(%eax)
4071f4:	8b 47 30             	mov    0x30(%edi),%eax
4071f7:	89 08                	mov    %ecx,(%eax)
4071f9:	8b 44 24 18          	mov    0x18(%esp),%eax
4071fd:	89 1e                	mov    %ebx,(%esi)
4071ff:	89 46 04             	mov    %eax,0x4(%esi)
407202:	eb 0d                	jmp    0x407211
407204:	c7 06 ff ff ff ff    	movl   $0xffffffff,(%esi)
40720a:	c7 46 04 ff ff ff ff 	movl   $0xffffffff,0x4(%esi)
407211:	c7 46 08 00 00 00 00 	movl   $0x0,0x8(%esi)
407218:	0f 57 c0             	xorps  %xmm0,%xmm0
40721b:	c7 46 0c 00 00 00 00 	movl   $0x0,0xc(%esi)
407222:	8b c6                	mov    %esi,%eax
407224:	5f                   	pop    %edi
407225:	66 0f d6 46 10       	movq   %xmm0,0x10(%esi)
40722a:	5e                   	pop    %esi
40722b:	5b                   	pop    %ebx
40722c:	8b e5                	mov    %ebp,%esp
40722e:	5d                   	pop    %ebp
40722f:	c2 20 00             	ret    $0x20
407232:	cc                   	int3
407233:	cc                   	int3
407234:	cc                   	int3
407235:	cc                   	int3
407236:	cc                   	int3
407237:	cc                   	int3
407238:	cc                   	int3
407239:	cc                   	int3
40723a:	cc                   	int3
40723b:	cc                   	int3
40723c:	cc                   	int3
40723d:	cc                   	int3
40723e:	cc                   	int3
40723f:	cc                   	int3
407240:	55                   	push   %ebp
407241:	8b ec                	mov    %esp,%ebp
407243:	83 e4 f8             	and    $0xfffffff8,%esp
407246:	83 ec 24             	sub    $0x24,%esp
407249:	53                   	push   %ebx
40724a:	56                   	push   %esi
40724b:	8b f1                	mov    %ecx,%esi
40724d:	57                   	push   %edi
40724e:	f6 46 3c 02          	testb  $0x2,0x3c(%esi)
407252:	8b 46 1c             	mov    0x1c(%esi),%eax
407255:	8b 00                	mov    (%eax),%eax
407257:	89 44 24 10          	mov    %eax,0x10(%esp)
40725b:	74 04                	je     0x407261
40725d:	33 c9                	xor    %ecx,%ecx
40725f:	eb 11                	jmp    0x407272
407261:	8b 46 20             	mov    0x20(%esi),%eax
407264:	8b 08                	mov    (%eax),%ecx
407266:	85 c9                	test   %ecx,%ecx
407268:	74 08                	je     0x407272
40726a:	39 4e 38             	cmp    %ecx,0x38(%esi)
40726d:	73 03                	jae    0x407272
40726f:	89 4e 38             	mov    %ecx,0x38(%esi)
407272:	8b 46 0c             	mov    0xc(%esi),%eax
407275:	8b 7e 38             	mov    0x38(%esi),%edi
407278:	8b 5d 18             	mov    0x18(%ebp),%ebx
40727b:	89 7c 24 2c          	mov    %edi,0x2c(%esp)
40727f:	8b 10                	mov    (%eax),%edx
407281:	2b fa                	sub    %edx,%edi
407283:	8b 45 14             	mov    0x14(%ebp),%eax
407286:	d1 ff                	sar    $1,%edi
407288:	89 54 24 24          	mov    %edx,0x24(%esp)
40728c:	89 7c 24 14          	mov    %edi,0x14(%esp)
407290:	83 e8 00             	sub    $0x0,%eax
407293:	74 66                	je     0x4072fb
407295:	83 e8 01             	sub    $0x1,%eax
407298:	74 12                	je     0x4072ac
40729a:	83 e8 01             	sub    $0x1,%eax
40729d:	0f 85 1c 01 00 00    	jne    0x4073bf
4072a3:	8b c7                	mov    %edi,%eax
4072a5:	99                   	cltd
4072a6:	8b f8                	mov    %eax,%edi
4072a8:	8b c2                	mov    %edx,%eax
4072aa:	eb 60                	jmp    0x40730c
4072ac:	8b c3                	mov    %ebx,%eax
4072ae:	83 e0 03             	and    $0x3,%eax
4072b1:	3c 03                	cmp    $0x3,%al
4072b3:	0f 84 06 01 00 00    	je     0x4073bf
4072b9:	f6 c3 01             	test   $0x1,%bl
4072bc:	74 1b                	je     0x4072d9
4072be:	8b 44 24 10          	mov    0x10(%esp),%eax
4072c2:	85 c0                	test   %eax,%eax
4072c4:	75 08                	jne    0x4072ce
4072c6:	85 d2                	test   %edx,%edx
4072c8:	0f 85 f1 00 00 00    	jne    0x4073bf
4072ce:	2b c2                	sub    %edx,%eax
4072d0:	d1 f8                	sar    $1,%eax
4072d2:	99                   	cltd
4072d3:	8b f8                	mov    %eax,%edi
4072d5:	8b c2                	mov    %edx,%eax
4072d7:	eb 33                	jmp    0x40730c
4072d9:	f6 c3 02             	test   $0x2,%bl
4072dc:	0f 84 dd 00 00 00    	je     0x4073bf
4072e2:	85 c9                	test   %ecx,%ecx
4072e4:	75 08                	jne    0x4072ee
4072e6:	85 d2                	test   %edx,%edx
4072e8:	0f 85 d1 00 00 00    	jne    0x4073bf
4072ee:	8b c1                	mov    %ecx,%eax
4072f0:	2b c2                	sub    %edx,%eax
4072f2:	d1 f8                	sar    $1,%eax
4072f4:	99                   	cltd
4072f5:	8b f8                	mov    %eax,%edi
4072f7:	8b c2                	mov    %edx,%eax
4072f9:	eb 11                	jmp    0x40730c
4072fb:	0f 57 c0             	xorps  %xmm0,%xmm0
4072fe:	66 0f 13 44 24 18    	movlpd %xmm0,0x18(%esp)
407304:	8b 44 24 1c          	mov    0x1c(%esp),%eax
407308:	8b 7c 24 18          	mov    0x18(%esp),%edi
40730c:	03 7d 0c             	add    0xc(%ebp),%edi
40730f:	13 45 10             	adc    0x10(%ebp),%eax
407312:	89 44 24 18          	mov    %eax,0x18(%esp)
407316:	8b 44 24 14          	mov    0x14(%esp),%eax
40731a:	99                   	cltd
40731b:	39 54 24 18          	cmp    %edx,0x18(%esp)
40731f:	0f 87 9a 00 00 00    	ja     0x4073bf
407325:	72 08                	jb     0x40732f
407327:	3b f8                	cmp    %eax,%edi
407329:	0f 87 90 00 00 00    	ja     0x4073bf
40732f:	8b c7                	mov    %edi,%eax
407331:	0b 44 24 18          	or     0x18(%esp),%eax
407335:	74 15                	je     0x40734c
407337:	f6 c3 01             	test   $0x1,%bl
40733a:	74 07                	je     0x407343
40733c:	83 7c 24 10 00       	cmpl   $0x0,0x10(%esp)
407341:	74 7c                	je     0x4073bf
407343:	f6 c3 02             	test   $0x2,%bl
407346:	74 04                	je     0x40734c
407348:	85 c9                	test   %ecx,%ecx
40734a:	74 73                	je     0x4073bf
40734c:	8b 54 24 24          	mov    0x24(%esp),%edx
407350:	8d 04 7a             	lea    (%edx,%edi,2),%eax
407353:	89 44 24 14          	mov    %eax,0x14(%esp)
407357:	f6 c3 01             	test   $0x1,%bl
40735a:	74 28                	je     0x407384
40735c:	83 7c 24 10 00       	cmpl   $0x0,0x10(%esp)
407361:	74 21                	je     0x407384
407363:	8b 46 0c             	mov    0xc(%esi),%eax
407366:	89 10                	mov    %edx,(%eax)
407368:	8b 46 1c             	mov    0x1c(%esi),%eax
40736b:	8b 54 24 14          	mov    0x14(%esp),%edx
40736f:	89 10                	mov    %edx,(%eax)
407371:	8b 54 24 2c          	mov    0x2c(%esp),%edx
407375:	2b 54 24 14          	sub    0x14(%esp),%edx
407379:	8b 46 2c             	mov    0x2c(%esi),%eax
40737c:	d1 fa                	sar    $1,%edx
40737e:	89 10                	mov    %edx,(%eax)
407380:	8b 54 24 24          	mov    0x24(%esp),%edx
407384:	f6 c3 02             	test   $0x2,%bl
407387:	74 28                	je     0x4073b1
407389:	85 c9                	test   %ecx,%ecx
40738b:	74 24                	je     0x4073b1
40738d:	8b 46 30             	mov    0x30(%esi),%eax
407390:	8b 08                	mov    (%eax),%ecx
407392:	8b 46 20             	mov    0x20(%esi),%eax
407395:	8b 00                	mov    (%eax),%eax
407397:	8d 0c 48             	lea    (%eax,%ecx,2),%ecx
40739a:	8b 46 10             	mov    0x10(%esi),%eax
40739d:	89 10                	mov    %edx,(%eax)
40739f:	8b 46 20             	mov    0x20(%esi),%eax
4073a2:	8b 54 24 14          	mov    0x14(%esp),%edx
4073a6:	2b ca                	sub    %edx,%ecx
4073a8:	d1 f9                	sar    $1,%ecx
4073aa:	89 10                	mov    %edx,(%eax)
4073ac:	8b 46 30             	mov    0x30(%esi),%eax
4073af:	89 08                	mov    %ecx,(%eax)
4073b1:	8b 45 08             	mov    0x8(%ebp),%eax
4073b4:	8b 4c 24 18          	mov    0x18(%esp),%ecx
4073b8:	89 38                	mov    %edi,(%eax)
4073ba:	89 48 04             	mov    %ecx,0x4(%eax)
4073bd:	eb 10                	jmp    0x4073cf
4073bf:	8b 45 08             	mov    0x8(%ebp),%eax
4073c2:	c7 00 ff ff ff ff    	movl   $0xffffffff,(%eax)
4073c8:	c7 40 04 ff ff ff ff 	movl   $0xffffffff,0x4(%eax)
4073cf:	5f                   	pop    %edi
4073d0:	0f 57 c0             	xorps  %xmm0,%xmm0
4073d3:	c7 40 08 00 00 00 00 	movl   $0x0,0x8(%eax)
4073da:	5e                   	pop    %esi
4073db:	c7 40 0c 00 00 00 00 	movl   $0x0,0xc(%eax)
4073e2:	66 0f d6 40 10       	movq   %xmm0,0x10(%eax)
4073e7:	5b                   	pop    %ebx
4073e8:	8b e5                	mov    %ebp,%esp
4073ea:	5d                   	pop    %ebp
4073eb:	c2 14 00             	ret    $0x14
4073ee:	cc                   	int3
4073ef:	cc                   	int3
4073f0:	55                   	push   %ebp
4073f1:	8b ec                	mov    %esp,%ebp
4073f3:	51                   	push   %ecx
4073f4:	8b d1                	mov    %ecx,%edx
4073f6:	53                   	push   %ebx
4073f7:	56                   	push   %esi
4073f8:	57                   	push   %edi
4073f9:	8b 5a 1c             	mov    0x1c(%edx),%ebx
4073fc:	8b 33                	mov    (%ebx),%esi
4073fe:	85 f6                	test   %esi,%esi
407400:	74 52                	je     0x407454
407402:	8b 4a 2c             	mov    0x2c(%edx),%ecx
407405:	8b 09                	mov    (%ecx),%ecx
407407:	8d 0c 4e             	lea    (%esi,%ecx,2),%ecx
40740a:	3b f1                	cmp    %ecx,%esi
40740c:	73 0a                	jae    0x407418
40740e:	66 8b 06             	mov    (%esi),%ax
407411:	5f                   	pop    %edi
407412:	5e                   	pop    %esi
407413:	5b                   	pop    %ebx
407414:	8b e5                	mov    %ebp,%esp
407416:	5d                   	pop    %ebp
407417:	c3                   	ret
407418:	8b 42 20             	mov    0x20(%edx),%eax
40741b:	8b 00                	mov    (%eax),%eax
40741d:	85 c0                	test   %eax,%eax
40741f:	74 33                	je     0x407454
407421:	f6 42 3c 04          	testb  $0x4,0x3c(%edx)
407425:	75 2d                	jne    0x407454
407427:	8b 7a 38             	mov    0x38(%edx),%edi
40742a:	3b f8                	cmp    %eax,%edi
40742c:	0f 42 f8             	cmovb  %eax,%edi
40742f:	3b fe                	cmp    %esi,%edi
407431:	76 21                	jbe    0x407454
407433:	89 7a 38             	mov    %edi,0x38(%edx)
407436:	8b c3                	mov    %ebx,%eax
407438:	8b 0b                	mov    (%ebx),%ecx
40743a:	2b f9                	sub    %ecx,%edi
40743c:	d1 ff                	sar    $1,%edi
40743e:	89 08                	mov    %ecx,(%eax)
407440:	8b 42 2c             	mov    0x2c(%edx),%eax
407443:	89 38                	mov    %edi,(%eax)
407445:	8b 42 1c             	mov    0x1c(%edx),%eax
407448:	5f                   	pop    %edi
407449:	5e                   	pop    %esi
40744a:	5b                   	pop    %ebx
40744b:	8b 00                	mov    (%eax),%eax
40744d:	66 8b 00             	mov    (%eax),%ax
407450:	8b e5                	mov    %ebp,%esp
407452:	5d                   	pop    %ebp
407453:	c3                   	ret
407454:	5f                   	pop    %edi
407455:	5e                   	pop    %esi
407456:	b8 ff ff 00 00       	mov    $0xffff,%eax
40745b:	5b                   	pop    %ebx
40745c:	8b e5                	mov    %ebp,%esp
40745e:	5d                   	pop    %ebp
40745f:	c3                   	ret
407460:	55                   	push   %ebp
407461:	8b ec                	mov    %esp,%ebp
407463:	8b 41 1c             	mov    0x1c(%ecx),%eax
407466:	66 8b 55 08          	mov    0x8(%ebp),%dx
40746a:	53                   	push   %ebx
40746b:	56                   	push   %esi
40746c:	8b 30                	mov    (%eax),%esi
40746e:	bb ff ff 00 00       	mov    $0xffff,%ebx
407473:	57                   	push   %edi
407474:	0f b7 fa             	movzwl %dx,%edi
407477:	85 f6                	test   %esi,%esi
407479:	74 41                	je     0x4074bc
40747b:	8b 41 0c             	mov    0xc(%ecx),%eax
40747e:	3b 30                	cmp    (%eax),%esi
407480:	76 3a                	jbe    0x4074bc
407482:	66 3b da             	cmp    %dx,%bx
407485:	74 0c                	je     0x407493
407487:	66 3b 56 fe          	cmp    -0x2(%esi),%dx
40748b:	74 06                	je     0x407493
40748d:	f6 41 3c 02          	testb  $0x2,0x3c(%ecx)
407491:	75 29                	jne    0x4074bc
407493:	8b 41 2c             	mov    0x2c(%ecx),%eax
407496:	ff 00                	incl   (%eax)
407498:	8b 41 1c             	mov    0x1c(%ecx),%eax
40749b:	83 00 fe             	addl   $0xfffffffe,(%eax)
40749e:	66 3b da             	cmp    %dx,%bx
4074a1:	74 08                	je     0x4074ab
4074a3:	8b 41 1c             	mov    0x1c(%ecx),%eax
4074a6:	8b 00                	mov    (%eax),%eax
4074a8:	66 89 10             	mov    %dx,(%eax)
4074ab:	8b c7                	mov    %edi,%eax
4074ad:	33 c9                	xor    %ecx,%ecx
4074af:	5f                   	pop    %edi
4074b0:	66 3b d3             	cmp    %bx,%dx
4074b3:	5e                   	pop    %esi
4074b4:	0f 44 c1             	cmove  %ecx,%eax
4074b7:	5b                   	pop    %ebx
4074b8:	5d                   	pop    %ebp
4074b9:	c2 04 00             	ret    $0x4
4074bc:	5f                   	pop    %edi
4074bd:	5e                   	pop    %esi
4074be:	66 8b c3             	mov    %bx,%ax
4074c1:	5b                   	pop    %ebx
4074c2:	5d                   	pop    %ebp
4074c3:	c2 04 00             	ret    $0x4
4074c6:	cc                   	int3
4074c7:	cc                   	int3
4074c8:	cc                   	int3