403569:	84 c0                	test   %al,%al
40356b:	74 44                	je     0x4035b1
40356d:	8b 56 10             	mov    0x10(%esi),%edx
403570:	83 ff 01             	cmp    $0x1,%edi
403573:	75 17                	jne    0x40358c
403575:	83 7e 14 08          	cmpl   $0x8,0x14(%esi)
403579:	72 04                	jb     0x40357f
40357b:	8b 0e                	mov    (%esi),%ecx
40357d:	eb 02                	jmp    0x403581
40357f:	8b ce                	mov    %esi,%ecx
403581:	66 8b 44 24 14       	mov    0x14(%esp),%ax
403586:	66 89 04 51          	mov    %ax,(%ecx,%edx,2)
40358a:	eb 1d                	jmp    0x4035a9
40358c:	83 7e 14 08          	cmpl   $0x8,0x14(%esi)
403590:	72 04                	jb     0x403596
403592:	8b 06                	mov    (%esi),%eax
403594:	eb 02                	jmp    0x403598
403596:	8b c6                	mov    %esi,%eax
403598:	57                   	push   %edi
403599:	ff 74 24 18          	push   0x18(%esp)
40359d:	8d 04 50             	lea    (%eax,%edx,2),%eax
4035a0:	50                   	push   %eax
4035a1:	e8 36 f2 ff ff       	call   0x4027dc
4035a6:	83 c4 0c             	add    $0xc,%esp
4035a9:	53                   	push   %ebx
4035aa:	8b ce                	mov    %esi,%ecx
4035ac:	e8 c4 ec ff ff       	call   0x402275
4035b1:	5b                   	pop    %ebx
4035b2:	5f                   	pop    %edi
4035b3:	8b c6                	mov    %esi,%eax
4035b5:	5e                   	pop    %esi
4035b6:	c2 08 00             	ret    $0x8
4035b9:	e8 45 ed ff ff       	call   0x402303
4035be:	cc                   	int3
4035bf:	55                   	push   %ebp
4035c0:	8b 6c 24 0c          	mov    0xc(%esp),%ebp
4035c4:	56                   	push   %esi
4035c5:	57                   	push   %edi
4035c6:	8b 7c 24 10          	mov    0x10(%esp),%edi
4035ca:	8b f1                	mov    %ecx,%esi
4035cc:	8b 47 10             	mov    0x10(%edi),%eax
4035cf:	3b c5                	cmp    %ebp,%eax
4035d1:	72 68                	jb     0x40363b
4035d3:	8b 4e 10             	mov    0x10(%esi),%ecx
4035d6:	2b c5                	sub    %ebp,%eax
4035d8:	53                   	push   %ebx
4035d9:	8b 5c 24 1c          	mov    0x1c(%esp),%ebx
4035dd:	3b c3                	cmp    %ebx,%eax
4035df:	0f 42 d8             	cmovb  %eax,%ebx
4035e2:	8b c1                	mov    %ecx,%eax
4035e4:	f7 d0                	not    %eax
4035e6:	3b c3                	cmp    %ebx,%eax
4035e8:	76 56                	jbe    0x403640
4035ea:	85 db                	test   %ebx,%ebx
4035ec:	74 44                	je     0x403632
4035ee:	8d 04 19             	lea    (%ecx,%ebx,1),%eax
4035f1:	8b ce                	mov    %esi,%ecx
4035f3:	6a 00                	push   $0x0
4035f5:	50                   	push   %eax
4035f6:	89 44 24 1c          	mov    %eax,0x1c(%esp)
4035fa:	e8 18 ec ff ff       	call   0x402217
4035ff:	84 c0                	test   %al,%al
403601:	74 2f                	je     0x403632
403603:	83 7f 14 08          	cmpl   $0x8,0x14(%edi)
403607:	72 02                	jb     0x40360b
403609:	8b 3f                	mov    (%edi),%edi
40360b:	83 7e 14 08          	cmpl   $0x8,0x14(%esi)
40360f:	72 04                	jb     0x403615
403611:	8b 0e                	mov    (%esi),%ecx
403613:	eb 02                	jmp    0x403617
403615:	8b ce                	mov    %esi,%ecx
403617:	8b 46 10             	mov    0x10(%esi),%eax
40361a:	8d 14 6f             	lea    (%edi,%ebp,2),%edx
40361d:	53                   	push   %ebx
40361e:	8d 0c 41             	lea    (%ecx,%eax,2),%ecx
403621:	e8 46 db ff ff       	call   0x40116c
403626:	59                   	pop    %ecx
403627:	ff 74 24 14          	push   0x14(%esp)
40362b:	8b ce                	mov    %esi,%ecx
40362d:	e8 43 ec ff ff       	call   0x402275
403632:	5b                   	pop    %ebx
403633:	5f                   	pop    %edi
403634:	8b c6                	mov    %esi,%eax
403636:	5e                   	pop    %esi
403637:	5d                   	pop    %ebp
403638:	c2 0c 00             	ret    $0xc
40363b:	e8 93 eb ff ff       	call   0x4021d3
403640:	e8 be ec ff ff       	call   0x402303
403645:	cc                   	int3
403646:	51                   	push   %ecx
403647:	33 c9                	xor    %ecx,%ecx
403649:	ba 28 01 00 00       	mov    $0x128,%edx
40364e:	41                   	inc    %ecx
40364f:	e8 32 db ff ff       	call   0x401186
403654:	59                   	pop    %ecx
403655:	8b 4c 24 04          	mov    0x4(%esp),%ecx
403659:	85 c9                	test   %ecx,%ecx
40365b:	75 06                	jne    0x403663
40365d:	8b c8                	mov    %eax,%ecx
40365f:	8b d0                	mov    %eax,%edx
403661:	eb 04                	jmp    0x403667
403663:	8b 54 24 08          	mov    0x8(%esp),%edx
403667:	85 c0                	test   %eax,%eax
403669:	74 02                	je     0x40366d
40366b:	89 08                	mov    %ecx,(%eax)
40366d:	8d 48 04             	lea    0x4(%eax),%ecx
403670:	85 c9                	test   %ecx,%ecx
403672:	74 02                	je     0x403676
403674:	89 11                	mov    %edx,(%ecx)
403676:	c2 08 00             	ret    $0x8
403679:	53                   	push   %ebx
40367a:	55                   	push   %ebp
40367b:	56                   	push   %esi
40367c:	8b f1                	mov    %ecx,%esi
40367e:	33 c0                	xor    %eax,%eax
403680:	57                   	push   %edi
403681:	6a 07                	push   $0x7
403683:	5d                   	pop    %ebp
403684:	83 66 10 00          	andl   $0x0,0x10(%esi)
403688:	bf a0 94 43 00       	mov    $0x4394a0,%edi
40368d:	89 6e 14             	mov    %ebp,0x14(%esi)
403690:	8b cf                	mov    %edi,%ecx
403692:	8b da                	mov    %edx,%ebx
403694:	66 89 06             	mov    %ax,(%esi)
403697:	e8 b0 da ff ff       	call   0x40114c
40369c:	03 43 10             	add    0x10(%ebx),%eax
40369f:	3b c5                	cmp    %ebp,%eax
4036a1:	74 23                	je     0x4036c6
4036a3:	6a 01                	push   $0x1
4036a5:	50                   	push   %eax
4036a6:	8b ce                	mov    %esi,%ecx
4036a8:	e8 6a eb ff ff       	call   0x402217
4036ad:	84 c0                	test   %al,%al
4036af:	74 15                	je     0x4036c6
4036b1:	83 66 10 00          	andl   $0x0,0x10(%esi)
4036b5:	83 7e 14 08          	cmpl   $0x8,0x14(%esi)
4036b9:	72 04                	jb     0x4036bf
4036bb:	8b 06                	mov    (%esi),%eax
4036bd:	eb 02                	jmp    0x4036c1
4036bf:	8b c6                	mov    %esi,%eax
4036c1:	33 c9                	xor    %ecx,%ecx
4036c3:	66 89 08             	mov    %cx,(%eax)
4036c6:	6a ff                	push   $0xffffffff
4036c8:	6a 00                	push   $0x0
4036ca:	53                   	push   %ebx
4036cb:	8b ce                	mov    %esi,%ecx
4036cd:	e8 ed fe ff ff       	call   0x4035bf
4036d2:	8b cf                	mov    %edi,%ecx
4036d4:	e8 73 da ff ff       	call   0x40114c
4036d9:	57                   	push   %edi
4036da:	8b ce                	mov    %esi,%ecx
4036dc:	8b d8                	mov    %eax,%ebx
4036de:	e8 fb ea ff ff       	call   0x4021de
4036e3:	84 c0                	test   %al,%al
4036e5:	74 1a                	je     0x403701
4036e7:	83 7e 14 08          	cmpl   $0x8,0x14(%esi)
4036eb:	72 04                	jb     0x4036f1
4036ed:	8b 06                	mov    (%esi),%eax
4036ef:	eb 02                	jmp    0x4036f3
4036f1:	8b c6                	mov    %esi,%eax
4036f3:	2b f8                	sub    %eax,%edi
4036f5:	53                   	push   %ebx
4036f6:	d1 ff                	sar    $1,%edi
4036f8:	57                   	push   %edi
4036f9:	56                   	push   %esi
4036fa:	e8 c0 fe ff ff       	call   0x4035bf
4036ff:	eb 50                	jmp    0x403751
403701:	8b 4e 10             	mov    0x10(%esi),%ecx
403704:	8b c1                	mov    %ecx,%eax
403706:	f7 d0                	not    %eax
403708:	3b c3                	cmp    %ebx,%eax
40370a:	76 4c                	jbe    0x403758
40370c:	85 db                	test   %ebx,%ebx
40370e:	74 41                	je     0x403751
403710:	8d 2c 19             	lea    (%ecx,%ebx,1),%ebp
403713:	8b ce                	mov    %esi,%ecx
403715:	6a 00                	push   $0x0
403717:	55                   	push   %ebp
403718:	e8 fa ea ff ff       	call   0x402217
40371d:	84 c0                	test   %al,%al
40371f:	74 30                	je     0x403751
403721:	83 7e 14 08          	cmpl   $0x8,0x14(%esi)
403725:	72 04                	jb     0x40372b
403727:	8b 0e                	mov    (%esi),%ecx
403729:	eb 02                	jmp    0x40372d
40372b:	8b ce                	mov    %esi,%ecx
40372d:	8b 46 10             	mov    0x10(%esi),%eax
403730:	8b d7                	mov    %edi,%edx
403732:	53                   	push   %ebx
403733:	8d 0c 41             	lea    (%ecx,%eax,2),%ecx
403736:	e8 31 da ff ff       	call   0x40116c
40373b:	83 7e 14 08          	cmpl   $0x8,0x14(%esi)
40373f:	59                   	pop    %ecx
403740:	89 6e 10             	mov    %ebp,0x10(%esi)
403743:	72 04                	jb     0x403749
403745:	8b 06                	mov    (%esi),%eax
403747:	eb 02                	jmp    0x40374b
403749:	8b c6                	mov    %esi,%eax
40374b:	33 c9                	xor    %ecx,%ecx
40374d:	66 89 0c 68          	mov    %cx,(%eax,%ebp,2)
403751:	5f                   	pop    %edi
403752:	8b c6                	mov    %esi,%eax
403754:	5e                   	pop    %esi
403755:	5d                   	pop    %ebp
403756:	5b                   	pop    %ebx
403757:	c3                   	ret
403758:	e8 a6 eb ff ff       	call   0x402303
40375d:	cc                   	int3
40375e:	b8 90 ff 43 00       	mov    $0x43ff90,%eax
403763:	c3                   	ret
403764:	8d 44 24 0c          	lea    0xc(%esp),%eax
403768:	50                   	push   %eax
403769:	6a 00                	push   $0x0
40376b:	ff 74 24 10          	push   0x10(%esp)
40376f:	ff 74 24 10          	push   0x10(%esp)
403773:	e8 30 f0 ff ff       	call   0x4027a8
403778:	ff 70 04             	push   0x4(%eax)
40377b:	ff 30                	push   (%eax)
40377d:	e8 a5 e4 00 00       	call   0x411c27
403782:	83 c4 18             	add    $0x18,%esp
403785:	c3                   	ret
403786:	8d 44 24 0c          	lea    0xc(%esp),%eax
40378a:	50                   	push   %eax
40378b:	6a 00                	push   $0x0
40378d:	ff 74 24 10          	push   0x10(%esp)
403791:	ff 74 24 10          	push   0x10(%esp)
403795:	e8 c4 ff ff ff       	call   0x40375e
40379a:	8b 08                	mov    (%eax),%ecx
40379c:	ff 70 04             	push   0x4(%eax)
40379f:	83 c9 01             	or     $0x1,%ecx
4037a2:	51                   	push   %ecx
4037a3:	e8 4b 4c 01 00       	call   0x4183f3
4037a8:	83 c4 18             	add    $0x18,%esp
4037ab:	c3                   	ret
4037ac:	55                   	push   %ebp
4037ad:	8b ec                	mov    %esp,%ebp
4037af:	56                   	push   %esi
4037b0:	ff 75 08             	push   0x8(%ebp)
4037b3:	8b f1                	mov    %ecx,%esi
4037b5:	e8 b0 e8 ff ff       	call   0x40206a
4037ba:	83 4e 18 ff          	orl    $0xffffffff,0x18(%esi)
4037be:	8d 45 08             	lea    0x8(%ebp),%eax
4037c1:	83 4e 1c ff          	orl    $0xffffffff,0x1c(%esi)
4037c5:	8b ce                	mov    %esi,%ecx
4037c7:	83 66 20 00          	andl   $0x0,0x20(%esi)
4037cb:	50                   	push   %eax
4037cc:	68 b8 94 43 00       	push   $0x4394b8
4037d1:	e8 20 02 00 00       	call   0x4039f6
4037d6:	85 c0                	test   %eax,%eax
4037d8:	75 13                	jne    0x4037ed
4037da:	ff 75 08             	push   0x8(%ebp)
4037dd:	8b ce                	mov    %esi,%ecx
4037df:	e8 f4 00 00 00       	call   0x4038d8
4037e4:	ff 75 08             	push   0x8(%ebp)
4037e7:	e8 a7 fe 00 00       	call   0x413693
4037ec:	59                   	pop    %ecx
4037ed:	8b c6                	mov    %esi,%eax
4037ef:	5e                   	pop    %esi
4037f0:	5d                   	pop    %ebp
4037f1:	c2 04 00             	ret    $0x4
4037f4:	55                   	push   %ebp
4037f5:	8b ec                	mov    %esp,%ebp
4037f7:	83 e4 f8             	and    $0xfffffff8,%esp
4037fa:	83 ec 2c             	sub    $0x2c,%esp
4037fd:	a1 c0 d0 43 00       	mov    0x43d0c0,%eax
403802:	33 c4                	xor    %esp,%eax
403804:	89 44 24 28          	mov    %eax,0x28(%esp)
403808:	8b 45 0c             	mov    0xc(%ebp),%eax
40380b:	53                   	push   %ebx
40380c:	8b 5d 08             	mov    0x8(%ebp),%ebx
40380f:	89 44 24 10          	mov    %eax,0x10(%esp)
403813:	8b 45 10             	mov    0x10(%ebp),%eax
403816:	56                   	push   %esi
403817:	89 44 24 10          	mov    %eax,0x10(%esp)
40381b:	8b f1                	mov    %ecx,%esi
40381d:	8b 45 14             	mov    0x14(%ebp),%eax
403820:	89 44 24 0c          	mov    %eax,0xc(%esp)
403824:	8d 44 24 18          	lea    0x18(%esp),%eax
403828:	57                   	push   %edi
403829:	50                   	push   %eax
40382a:	ff 15 48 11 43 00    	call   *0x431148
403830:	0f b7 44 24 1c       	movzwl 0x1c(%esp),%eax
403835:	6b c8 64             	imul   $0x64,%eax,%ecx
403838:	0f b7 44 24 1e       	movzwl 0x1e(%esp),%eax
40383d:	03 c8                	add    %eax,%ecx
40383f:	0f b7 44 24 22       	movzwl 0x22(%esp),%eax
403844:	6b f9 64             	imul   $0x64,%ecx,%edi
403847:	03 f8                	add    %eax,%edi
403849:	3b 7e 1c             	cmp    0x1c(%esi),%edi
40384c:	75 12                	jne    0x403860
40384e:	8b 46 18             	mov    0x18(%esi),%eax
403851:	83 f8 ff             	cmp    $0xffffffff,%eax
403854:	74 0a                	je     0x403860
403856:	39 46 20             	cmp    %eax,0x20(%esi)
403859:	7c 05                	jl     0x403860
40385b:	6a 03                	push   $0x3
40385d:	58                   	pop    %eax
40385e:	eb 64                	jmp    0x4038c4
403860:	83 64 24 0c 00       	andl   $0x0,0xc(%esp)
403865:	8d 4c 24 1c          	lea    0x1c(%esp),%ecx
403869:	68 bc 94 43 00       	push   $0x4394bc
40386e:	e8 7d e7 ff ff       	call   0x401ff0
403873:	8b 54 24 18          	mov    0x18(%esp),%edx
403877:	8d 44 24 0c          	lea    0xc(%esp),%eax
40387b:	50                   	push   %eax
40387c:	ff 74 24 14          	push   0x14(%esp)
403880:	8d 44 24 24          	lea    0x24(%esp),%eax
403884:	51                   	push   %ecx
403885:	50                   	push   %eax
403886:	ff 74 24 24          	push   0x24(%esp)
40388a:	8b cb                	mov    %ebx,%ecx
40388c:	e8 59 09 00 00       	call   0x4041ea
403891:	83 c4 14             	add    $0x14,%esp
403894:	8d 4c 24 1c          	lea    0x1c(%esp),%ecx
403898:	8a d8                	mov    %al,%bl
40389a:	6a 00                	push   $0x0
40389c:	6a 01                	push   $0x1
40389e:	e8 22 e8 ff ff       	call   0x4020c5
4038a3:	84 db                	test   %bl,%bl
4038a5:	74 0c                	je     0x4038b3
4038a7:	57                   	push   %edi
4038a8:	8b ce                	mov    %esi,%ecx
4038aa:	e8 e1 00 00 00       	call   0x403990
4038af:	6a 02                	push   $0x2
4038b1:	eb aa                	jmp    0x40385d
4038b3:	8b 44 24 0c          	mov    0xc(%esp),%eax
4038b7:	05 70 fe ff ff       	add    $0xfffffe70,%eax
4038bc:	6a 63                	push   $0x63
4038be:	59                   	pop    %ecx
4038bf:	3b c8                	cmp    %eax,%ecx
4038c1:	1b c0                	sbb    %eax,%eax
4038c3:	40                   	inc    %eax
4038c4:	8b 4c 24 34          	mov    0x34(%esp),%ecx
4038c8:	5f                   	pop    %edi
4038c9:	5e                   	pop    %esi
4038ca:	5b                   	pop    %ebx
4038cb:	33 cc                	xor    %esp,%ecx
4038cd:	e8 d5 63 00 00       	call   0x409ca7
4038d2:	8b e5                	mov    %ebp,%esp
4038d4:	5d                   	pop    %ebp
4038d5:	c2 10 00             	ret    $0x10
4038d8:	81 ec 84 00 00 00    	sub    $0x84,%esp
4038de:	a1 c0 d0 43 00       	mov    0x43d0c0,%eax
4038e3:	33 c4                	xor    %esp,%eax
4038e5:	89 84 24 80 00 00 00 	mov    %eax,0x80(%esp)
4038ec:	53                   	push   %ebx
4038ed:	57                   	push   %edi
4038ee:	8b bc 24 90 00 00 00 	mov    0x90(%esp),%edi
4038f5:	8d 44 24 08          	lea    0x8(%esp),%eax
4038f9:	57                   	push   %edi