4070e3:	8b 46 04             	mov    0x4(%esi),%eax
4070e6:	99                   	cltd
4070e7:	03 f8                	add    %eax,%edi
4070e9:	6a 00                	push   $0x0
4070eb:	6a 3c                	push   $0x3c
4070ed:	13 da                	adc    %edx,%ebx
4070ef:	53                   	push   %ebx
4070f0:	57                   	push   %edi
4070f1:	e8 4a 10 01 00       	call   0x418140
4070f6:	89 46 04             	mov    %eax,0x4(%esi)
4070f9:	85 c0                	test   %eax,%eax
4070fb:	79 0c                	jns    0x407109
4070fd:	83 c0 3c             	add    $0x3c,%eax
407100:	83 c7 c4             	add    $0xffffffc4,%edi
407103:	89 46 04             	mov    %eax,0x4(%esi)
407106:	83 d3 ff             	adc    $0xffffffff,%ebx
407109:	6a 00                	push   $0x0
40710b:	6a 3c                	push   $0x3c
40710d:	53                   	push   %ebx
40710e:	57                   	push   %edi
40710f:	e8 7c 0f 01 00       	call   0x418090
407114:	8b f8                	mov    %eax,%edi
407116:	8b da                	mov    %edx,%ebx
407118:	8b 46 08             	mov    0x8(%esi),%eax
40711b:	99                   	cltd
40711c:	03 f8                	add    %eax,%edi
40711e:	6a 00                	push   $0x0
407120:	6a 18                	push   $0x18
407122:	13 da                	adc    %edx,%ebx
407124:	53                   	push   %ebx
407125:	57                   	push   %edi
407126:	e8 15 10 01 00       	call   0x418140
40712b:	89 46 08             	mov    %eax,0x8(%esi)
40712e:	85 c0                	test   %eax,%eax
407130:	79 0c                	jns    0x40713e
407132:	83 c0 18             	add    $0x18,%eax
407135:	83 c7 e8             	add    $0xffffffe8,%edi
407138:	89 46 08             	mov    %eax,0x8(%esi)
40713b:	83 d3 ff             	adc    $0xffffffff,%ebx
40713e:	6a 00                	push   $0x0
407140:	6a 18                	push   $0x18
407142:	53                   	push   %ebx
407143:	57                   	push   %edi
407144:	e8 47 0f 01 00       	call   0x418090
407149:	8b c8                	mov    %eax,%ecx
40714b:	85 d2                	test   %edx,%edx
40714d:	7c 2b                	jl     0x40717a
40714f:	7f 04                	jg     0x407155
407151:	85 c9                	test   %ecx,%ecx
407153:	74 1b                	je     0x407170
407155:	8b 46 18             	mov    0x18(%esi),%eax
407158:	03 c1                	add    %ecx,%eax
40715a:	6a 07                	push   $0x7
40715c:	99                   	cltd
40715d:	5f                   	pop    %edi
40715e:	f7 ff                	idiv   %edi
407160:	01 4e 0c             	add    %ecx,0xc(%esi)
407163:	89 56 18             	mov    %edx,0x18(%esi)
407166:	01 4e 1c             	add    %ecx,0x1c(%esi)
407169:	33 c0                	xor    %eax,%eax
40716b:	e9 35 fe ff ff       	jmp    0x406fa5
407170:	85 d2                	test   %edx,%edx
407172:	7f f5                	jg     0x407169
407174:	7c 04                	jl     0x40717a
407176:	85 c9                	test   %ecx,%ecx
407178:	73 ef                	jae    0x407169
40717a:	8b 46 18             	mov    0x18(%esi),%eax
40717d:	83 c0 07             	add    $0x7,%eax
407180:	01 4e 0c             	add    %ecx,0xc(%esi)
407183:	03 c1                	add    %ecx,%eax
407185:	6a 07                	push   $0x7
407187:	99                   	cltd
407188:	5f                   	pop    %edi
407189:	f7 ff                	idiv   %edi
40718b:	8b 46 0c             	mov    0xc(%esi),%eax
40718e:	89 56 18             	mov    %edx,0x18(%esi)
407191:	85 c0                	test   %eax,%eax
407193:	7f d1                	jg     0x407166
407195:	83 c0 1f             	add    $0x1f,%eax
407198:	c7 46 10 0b 00 00 00 	movl   $0xb,0x10(%esi)
40719f:	89 46 0c             	mov    %eax,0xc(%esi)
4071a2:	8d 81 6d 01 00 00    	lea    0x16d(%ecx),%eax
4071a8:	01 46 1c             	add    %eax,0x1c(%esi)
4071ab:	ff 4e 14             	decl   0x14(%esi)
4071ae:	eb b9                	jmp    0x407169
4071b0:	53                   	push   %ebx
4071b1:	53                   	push   %ebx
4071b2:	53                   	push   %ebx
4071b3:	53                   	push   %ebx
4071b4:	53                   	push   %ebx
4071b5:	e8 a1 0a 00 00       	call   0x407c5b
4071ba:	cc                   	int3
4071bb:	8b ff                	mov    %edi,%edi
4071bd:	55                   	push   %ebp
4071be:	8b ec                	mov    %esp,%ebp
4071c0:	5d                   	pop    %ebp
4071c1:	e9 6b fd ff ff       	jmp    0x406f31
4071c6:	6a 10                	push   $0x10
4071c8:	68 58 1b 42 00       	push   $0x421b58
4071cd:	e8 7e c9 ff ff       	call   0x403b50
4071d2:	33 c0                	xor    %eax,%eax
4071d4:	8b 75 08             	mov    0x8(%ebp),%esi
4071d7:	85 f6                	test   %esi,%esi
4071d9:	0f 95 c0             	setne  %al
4071dc:	85 c0                	test   %eax,%eax
4071de:	75 14                	jne    0x4071f4
4071e0:	e8 22 0b 00 00       	call   0x407d07
4071e5:	c7 00 16 00 00 00    	movl   $0x16,(%eax)
4071eb:	e8 3e 0a 00 00       	call   0x407c2e
4071f0:	33 c0                	xor    %eax,%eax
4071f2:	eb 73                	jmp    0x407267
4071f4:	33 c0                	xor    %eax,%eax
4071f6:	8b 7d 0c             	mov    0xc(%ebp),%edi
4071f9:	85 ff                	test   %edi,%edi
4071fb:	0f 95 c0             	setne  %al
4071fe:	85 c0                	test   %eax,%eax
407200:	74 de                	je     0x4071e0
407202:	33 c0                	xor    %eax,%eax
407204:	33 db                	xor    %ebx,%ebx
407206:	66 39 1f             	cmp    %bx,(%edi)
407209:	0f 95 c0             	setne  %al
40720c:	85 c0                	test   %eax,%eax
40720e:	74 d0                	je     0x4071e0
407210:	66 39 1e             	cmp    %bx,(%esi)
407213:	75 0d                	jne    0x407222
407215:	e8 ed 0a 00 00       	call   0x407d07
40721a:	c7 00 16 00 00 00    	movl   $0x16,(%eax)
407220:	eb ce                	jmp    0x4071f0
407222:	8d 45 e4             	lea    -0x1c(%ebp),%eax
407225:	50                   	push   %eax
407226:	e8 d4 61 00 00       	call   0x40d3ff
40722b:	59                   	pop    %ecx
40722c:	39 5d e4             	cmp    %ebx,-0x1c(%ebp)
40722f:	75 0d                	jne    0x40723e
407231:	e8 d1 0a 00 00       	call   0x407d07
407236:	c7 00 18 00 00 00    	movl   $0x18,(%eax)
40723c:	eb b2                	jmp    0x4071f0
40723e:	89 5d e0             	mov    %ebx,-0x20(%ebp)
407241:	89 5d fc             	mov    %ebx,-0x4(%ebp)
407244:	ff 75 e4             	push   -0x1c(%ebp)
407247:	ff 75 10             	push   0x10(%ebp)
40724a:	57                   	push   %edi
40724b:	56                   	push   %esi
40724c:	e8 c7 66 00 00       	call   0x40d918
407251:	83 c4 10             	add    $0x10,%esp
407254:	8b f0                	mov    %eax,%esi
407256:	89 75 e0             	mov    %esi,-0x20(%ebp)
407259:	c7 45 fc fe ff ff ff 	movl   $0xfffffffe,-0x4(%ebp)
407260:	e8 0b 00 00 00       	call   0x407270
407265:	8b c6                	mov    %esi,%eax
407267:	e8 2a c9 ff ff       	call   0x403b96
40726c:	c3                   	ret
40726d:	8b 75 e0             	mov    -0x20(%ebp),%esi
407270:	85 f6                	test   %esi,%esi
407272:	75 09                	jne    0x40727d
407274:	ff 75 e4             	push   -0x1c(%ebp)
407277:	e8 e2 61 00 00       	call   0x40d45e
40727c:	59                   	pop    %ecx
40727d:	ff 75 e4             	push   -0x1c(%ebp)
407280:	e8 b9 44 00 00       	call   0x40b73e
407285:	59                   	pop    %ecx
407286:	c3                   	ret
407287:	8b ff                	mov    %edi,%edi
407289:	55                   	push   %ebp
40728a:	8b ec                	mov    %esp,%ebp
40728c:	56                   	push   %esi
40728d:	8b 75 08             	mov    0x8(%ebp),%esi
407290:	85 f6                	test   %esi,%esi
407292:	75 11                	jne    0x4072a5
407294:	e8 6e 0a 00 00       	call   0x407d07
407299:	6a 16                	push   $0x16
40729b:	5e                   	pop    %esi
40729c:	89 30                	mov    %esi,(%eax)
40729e:	e8 8b 09 00 00       	call   0x407c2e
4072a3:	eb 24                	jmp    0x4072c9
4072a5:	68 80 00 00 00       	push   $0x80
4072aa:	ff 75 10             	push   0x10(%ebp)
4072ad:	ff 75 0c             	push   0xc(%ebp)
4072b0:	e8 11 ff ff ff       	call   0x4071c6
4072b5:	83 c4 0c             	add    $0xc,%esp
4072b8:	89 06                	mov    %eax,(%esi)
4072ba:	85 c0                	test   %eax,%eax
4072bc:	75 09                	jne    0x4072c7
4072be:	e8 44 0a 00 00       	call   0x407d07
4072c3:	8b 30                	mov    (%eax),%esi
4072c5:	eb 02                	jmp    0x4072c9
4072c7:	33 f6                	xor    %esi,%esi
4072c9:	8b c6                	mov    %esi,%eax
4072cb:	5e                   	pop    %esi
4072cc:	5d                   	pop    %ebp
4072cd:	c3                   	ret
4072ce:	8b ff                	mov    %edi,%edi
4072d0:	55                   	push   %ebp
4072d1:	8b ec                	mov    %esp,%ebp
4072d3:	56                   	push   %esi
4072d4:	8b 75 08             	mov    0x8(%ebp),%esi
4072d7:	85 f6                	test   %esi,%esi
4072d9:	75 15                	jne    0x4072f0
4072db:	e8 27 0a 00 00       	call   0x407d07
4072e0:	c7 00 16 00 00 00    	movl   $0x16,(%eax)
4072e6:	e8 43 09 00 00       	call   0x407c2e
4072eb:	83 c8 ff             	or     $0xffffffff,%eax
4072ee:	eb 51                	jmp    0x407341
4072f0:	8b 46 0c             	mov    0xc(%esi),%eax
4072f3:	57                   	push   %edi
4072f4:	83 cf ff             	or     $0xffffffff,%edi
4072f7:	c1 e8 0d             	shr    $0xd,%eax
4072fa:	a8 01                	test   $0x1,%al
4072fc:	74 39                	je     0x407337
4072fe:	56                   	push   %esi
4072ff:	e8 22 68 00 00       	call   0x40db26
407304:	56                   	push   %esi
407305:	8b f8                	mov    %eax,%edi
407307:	e8 dc 67 00 00       	call   0x40dae8
40730c:	56                   	push   %esi
40730d:	e8 ce 42 00 00       	call   0x40b5e0
407312:	50                   	push   %eax
407313:	e8 b5 66 00 00       	call   0x40d9cd
407318:	83 c4 10             	add    $0x10,%esp
40731b:	85 c0                	test   %eax,%eax
40731d:	79 05                	jns    0x407324
40731f:	83 cf ff             	or     $0xffffffff,%edi
407322:	eb 13                	jmp    0x407337
407324:	83 7e 1c 00          	cmpl   $0x0,0x1c(%esi)
407328:	74 0d                	je     0x407337
40732a:	ff 76 1c             	push   0x1c(%esi)
40732d:	e8 f2 24 00 00       	call   0x409824
407332:	83 66 1c 00          	andl   $0x0,0x1c(%esi)
407336:	59                   	pop    %ecx
407337:	56                   	push   %esi
407338:	e8 21 61 00 00       	call   0x40d45e
40733d:	59                   	pop    %ecx
40733e:	8b c7                	mov    %edi,%eax
407340:	5f                   	pop    %edi
407341:	5e                   	pop    %esi
407342:	5d                   	pop    %ebp
407343:	c3                   	ret
407344:	6a 10                	push   $0x10
407346:	68 78 1b 42 00       	push   $0x421b78
40734b:	e8 00 c8 ff ff       	call   0x403b50
407350:	8b 75 08             	mov    0x8(%ebp),%esi
407353:	89 75 e0             	mov    %esi,-0x20(%ebp)
407356:	33 c0                	xor    %eax,%eax
407358:	85 f6                	test   %esi,%esi
40735a:	0f 95 c0             	setne  %al
40735d:	85 c0                	test   %eax,%eax
40735f:	75 15                	jne    0x407376
407361:	e8 a1 09 00 00       	call   0x407d07
407366:	c7 00 16 00 00 00    	movl   $0x16,(%eax)
40736c:	e8 bd 08 00 00       	call   0x407c2e
407371:	83 c8 ff             	or     $0xffffffff,%eax
407374:	eb 3b                	jmp    0x4073b1
407376:	8b 46 0c             	mov    0xc(%esi),%eax
407379:	c1 e8 0c             	shr    $0xc,%eax
40737c:	56                   	push   %esi
40737d:	a8 01                	test   $0x1,%al
40737f:	74 08                	je     0x407389
407381:	e8 d8 60 00 00       	call   0x40d45e
407386:	59                   	pop    %ecx
407387:	eb e8                	jmp    0x407371
407389:	83 65 e4 00          	andl   $0x0,-0x1c(%ebp)
40738d:	e8 98 43 00 00       	call   0x40b72a
407392:	59                   	pop    %ecx
407393:	83 65 fc 00          	andl   $0x0,-0x4(%ebp)
407397:	56                   	push   %esi
407398:	e8 31 ff ff ff       	call   0x4072ce
40739d:	59                   	pop    %ecx
40739e:	8b f0                	mov    %eax,%esi
4073a0:	89 75 e4             	mov    %esi,-0x1c(%ebp)
4073a3:	c7 45 fc fe ff ff ff 	movl   $0xfffffffe,-0x4(%ebp)
4073aa:	e8 0b 00 00 00       	call   0x4073ba
4073af:	8b c6                	mov    %esi,%eax
4073b1:	e8 e0 c7 ff ff       	call   0x403b96
4073b6:	c3                   	ret
4073b7:	8b 75 e4             	mov    -0x1c(%ebp),%esi
4073ba:	ff 75 e0             	push   -0x20(%ebp)
4073bd:	e8 7c 43 00 00       	call   0x40b73e
4073c2:	59                   	pop    %ecx
4073c3:	c3                   	ret
4073c4:	8b ff                	mov    %edi,%edi
4073c6:	55                   	push   %ebp
4073c7:	8b ec                	mov    %esp,%ebp
4073c9:	53                   	push   %ebx
4073ca:	56                   	push   %esi
4073cb:	8b 75 08             	mov    0x8(%ebp),%esi
4073ce:	2b 75 10             	sub    0x10(%ebp),%esi
4073d1:	57                   	push   %edi
4073d2:	8b 7d 0c             	mov    0xc(%ebp),%edi
4073d5:	1b 7d 14             	sbb    0x14(%ebp),%edi
4073d8:	33 c9                	xor    %ecx,%ecx
4073da:	33 c0                	xor    %eax,%eax
4073dc:	41                   	inc    %ecx
4073dd:	39 45 0c             	cmp    %eax,0xc(%ebp)
4073e0:	7f 0b                	jg     0x4073ed
4073e2:	7c 05                	jl     0x4073e9
4073e4:	39 45 08             	cmp    %eax,0x8(%ebp)
4073e7:	73 04                	jae    0x4073ed
4073e9:	8b d9                	mov    %ecx,%ebx
4073eb:	eb 02                	jmp    0x4073ef
4073ed:	8b d8                	mov    %eax,%ebx
4073ef:	39 45 14             	cmp    %eax,0x14(%ebp)
4073f2:	7f 0b                	jg     0x4073ff
4073f4:	7c 05                	jl     0x4073fb
4073f6:	39 45 10             	cmp    %eax,0x10(%ebp)
4073f9:	73 04                	jae    0x4073ff
4073fb:	8b d1                	mov    %ecx,%edx
4073fd:	eb 02                	jmp    0x407401
4073ff:	8b d0                	mov    %eax,%edx
407401:	3b da                	cmp    %edx,%ebx
407403:	74 33                	je     0x407438
407405:	39 45 0c             	cmp    %eax,0xc(%ebp)
407408:	7f 0b                	jg     0x407415
40740a:	7c 05                	jl     0x407411
40740c:	39 45 08             	cmp    %eax,0x8(%ebp)
40740f:	73 04                	jae    0x407415
407411:	8b d1                	mov    %ecx,%edx
407413:	eb 02                	jmp    0x407417
407415:	8b d0                	mov    %eax,%edx
407417:	3b f8                	cmp    %eax,%edi
407419:	7f 06                	jg     0x407421
40741b:	7c 06                	jl     0x407423
40741d:	3b f0                	cmp    %eax,%esi
40741f:	72 02                	jb     0x407423
407421:	8b c8                	mov    %eax,%ecx
407423:	3b d1                	cmp    %ecx,%edx
407425:	74 11                	je     0x407438
407427:	8b 45 18             	mov    0x18(%ebp),%eax
40742a:	83 08 ff             	orl    $0xffffffff,(%eax)
40742d:	83 48 04 ff          	orl    $0xffffffff,0x4(%eax)
407431:	b8 16 02 07 80       	mov    $0x80070216,%eax
407436:	eb 08                	jmp    0x407440
407438:	8b 4d 18             	mov    0x18(%ebp),%ecx
40743b:	89 31                	mov    %esi,(%ecx)
40743d:	89 79 04             	mov    %edi,0x4(%ecx)
407440:	5f                   	pop    %edi
407441:	5e                   	pop    %esi
407442:	5b                   	pop    %ebx
407443:	5d                   	pop    %ebp
407444:	c3                   	ret
407445:	6a 0c                	push   $0xc
407447:	68 98 1b 42 00       	push   $0x421b98
40744c:	e8 ff c6 ff ff       	call   0x403b50
407451:	33 c0                	xor    %eax,%eax
407453:	39 45 08             	cmp    %eax,0x8(%ebp)
407456:	0f 95 c0             	setne  %al
407459:	85 c0                	test   %eax,%eax
40745b:	75 15                	jne    0x407472
40745d:	e8 a5 08 00 00       	call   0x407d07
407462:	c7 00 16 00 00 00    	movl   $0x16,(%eax)
407468:	e8 c1 07 00 00       	call   0x407c2e