Function at 0x46fd90
Capabilities:
Resolve function by parsing pe exports

Disassembly:
sub esp, 0x1b4
push ebx
xor eax, eax
xor ebx, ebx
push ebp
mov dword [esp + 0x24], eax
push esi
mov dword [esp + 0x2c], eax
lea ecx, [esp + 0x1c]
push edi
mov dword [esp + 0x34], eax
push ecx
mov dword [esp + 0x24], ebx
mov dword [esp + 0x28], ebx
mov dword [esp + 0x2c], ebx
mov dword [esp + 0x3c], eax
mov dword [esp + 0x40], ebx
mov dword [esp + 0x44], ebx
mov dword [esp + 0x48], ebx
mov dword [esp + 0x4c], ebx
mov dword [esp + 0x50], ebx
mov dword [esp + 0x64], ebx
call fcn.0046edb0
mov edx, dword [0x728820]
mov al, byte [0x727d98]
mov byte [edx + 0x728814], al
mov edx, dword [0x728820]
add esp, 4
inc edx
cmp al, bl
mov dword [0x878be0], 0xffffffff
mov dword [0x728820], edx
je 0x46fe10
call fcn.00481060
mov eax, dword [esp + 0x28]
push 1
push eax
mov byte [0x727d98], bl
mov byte [0x8cbdf4], 1
call fcn.004bf440
push str.Seeking_passage_to_the_New_nWorld__you_inquire_at_a_public_house.
mov esi, 0x8ebf58
call fcn.004f7660
add esp, 4
push 0xffffffffffffffff
push ebx
mov edx, str.intro_s.dds
lea ebx, [esp + 0x28]
call fcn.0046f980
add esp, 8
test al, al
jne 0x46fe74
push str.If_ye_be_lookin_for_passage_nto_the_Americas__ye_can_sign_up_here.
call fcn.004f7660
add esp, 4
push 0xffffffffffffffff
push 0x3e8
mov edx, str.intro_s1.dds
call fcn.0046f980
add esp, 8
mov al, byte [0x8ccc27]
test al, al
je 0x46fe9f
lea esi, [esp + 0x20]
call fcn.0046f630
call fcn.004810e0
lea edi, [esp + 0x20]
call fcn.00470910
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x1b4
ret
call fcn.004ae970
call fcn.004719a0
mov eax, dword [esp + 0x20]
test eax, eax
jne 0x46feb8
call fcn.004ae970
jmp 0x46fec5
push str.Camera_all
call fcn.004aea30
add esp, 4
mov eax, dword [0x8ebfd8]
push 0x47c35000
push 0x3c23d70a
call fcn.00412840
mov ecx, dword [0x8ebfd8]
push 1
push 0
call fcn.00535550
push str.Ye_need_to_sign_on_as_part_of_a_crew.__The_ncaptains_at_yonder_tables_will_gladly_take_ye_aboard.
mov esi, 0x8ebf58
call fcn.004f7660
add esp, 4
push 0xffffffffffffffff
push 0x3e9
mov edx, str.intro_s1.dds
lea ebx, [esp + 0x28]
call fcn.0046f980
add esp, 8
test al, al
mov edi, 0x50
jne 0x4700f7
fld qword [0x8ca4b0]
mov ecx, dword [0x8cbdd8]
fld dword [0x71563c]
mov dword [esp + 0x64], 0x3ea
fadd st(1)
mov dword [0x8cbde0], ecx
fstp dword [esp + 0x18]
fcomp dword [esp + 0x18]
fnstsw ax
test ah, 5
jp 0x4700f7
push 0
call fcn.0042e1a0
add esp, 4
cmp eax, 0x1b
je 0x4700f7
cmp eax, 0x20
je 0x4700f7
cmp eax, 0xd
je 0x4700f7
mov eax, dword [0x86e35c]
test eax, eax
jne 0x4700f7
mov al, byte [0x8ccc27]
test al, al
jne 0x4700f7
call fcn.0046f7c0
mov eax, dword [0x8ccc18]
lea eax, [eax + eax*4]
shl eax, 4
cdq
and edx, 0x3ff
add eax, edx
sar eax, 0xa
mov dword [esp + 0x10], eax
mov eax, dword [0x8cbdd8]
push 0
fld dword [eax + 4]
push 0xffffffffffffffff
fild dword [0x728380]
push 4
push 0xffffffffffffffff
mov dword [0x85c11c], edi
fmul st(1)
mov dword [0x8cbde0], eax
push edi
fidiv dword [0x8ccc1c]
fadd dword [0x715588]
fimul dword [esp + 0x24]
fmul dword [0x715584]
call fcn.005f275c
fstp st(0)
mov edx, 0x198
sub edx, eax
mov eax, dword [0x85c26c]
push edx
cdq
sub eax, edx
sar eax, 1
push eax
push 0x86bb48
xor eax, eax
call fcn.004b0b40
mov esi, dword [esp + 0x64]
add esp, 0x20
test esi, esi
je 0x4700a2
fild dword [esi + 0x38]
push 0
push 0x42c80000
fmul dword [0x70de8c]
fsub dword [0x70deb0]
call fcn.005f275c
fild dword [esi + 0x34]
push eax
fmul dword [0x70de8c]
fsub dword [0x70deb0]
call fcn.005f275c
push eax
push esi
call fcn.004bc130
mov esi, dword [esp + 0x44]
test esi, esi
je 0x4700a2
fild dword [esi + 0x38]
mov eax, dword [0x85c268]
add eax, 0xffffffda
mov dword [esp + 0x10], eax
fmul dword [0x70de8c]
push 0
push 0x42c80000
fiadd dword [esp + 0x18]
call fcn.005f275c
fild dword [esi + 0x34]
push eax
fmul dword [0x70de8c]
fsub dword [0x70deb0]
call fcn.005f275c
push eax
push esi
call fcn.004bc130
mov esi, dword [0x85c268]
mov ecx, dword [0x85c26c]
mov eax, esi
cdq
and edx, 0xf
add eax, edx
sar eax, 4
sub esi, eax
mov eax, ecx
cdq
and edx, 0xf
add eax, edx
sar eax, 4
sub ecx, eax
push 0xffffffffffffffff
push ecx
xor cl, cl
mov eax, esi
call fcn.0042feb0
push 0
push 0
push 0
call fcn.004d1a40
fld qword [0x8ca4b0]
add esp, 0x14
fcomp dword [esp + 0x18]
fnstsw ax
test ah, 5
jnp 0x46ff54
mov ecx, dword [esp + 0x28]
push 2
push ecx
call fcn.004bf440
mov eax, 0x5b
mov dword [esp + 0x9c], eax
mov dword [esp + 0xa4], eax
mov eax, 0x97
xor bx, bx
mov dword [esp + 0x80], 0x28
mov dword [esp + 0x84], 0x70
mov dword [esp + 0x88], 0x6b
mov dword [esp + 0x8c], 0x84
mov dword [esp + 0x90], 0xc1
mov dword [esp + 0x94], 0x4d
mov dword [esp + 0x98], 0x51
mov dword [esp + 0xa0], 0x199
mov dword [esp + 0xa8], 0x52
mov dword [esp + 0xac], 0x65
mov dword [esp + 0xb0], 0x1ed
mov dword [esp + 0xb4], eax
mov dword [esp + 0xb8], 0x56
mov dword [esp + 0xbc], eax
xor edx, edx
lea ecx, [esp + 0x80]
lea esp, [esp]
mov edi, dword [ecx]
mov bp, word [ecx + 8]
mov esi, dword [ecx + 4]
movsx eax, bx
shl eax, 1
add bp, di
mov word [eax + 0x86e010], di
mov di, word [ecx + 0xc]
add di, si
inc bx
mov word [eax + 0x86e1a0], dx
inc edx
add ecx, 0x10
cmp edx, 4
mov word [eax + 0x86de80], si
mov word [eax + 0x86dcf0], bp
mov word [eax + 0x86db60], di
jl 0x4701c0
lea edx, [esp + 0x18]
push edx
xor ebp, ebp
lea eax, [esp + 0x18]
push eax
push ebp
push ebp
push str.intro_s2
mov word [0x86e330], bx
mov dword [esp + 0x84], 2
mov dword [esp + 0x88], ebp
mov dword [esp + 0x8c], 3
mov dword [esp + 0x90], 1
mov dword [esp + 0x28], ebp
mov dword [esp + 0x2c], ebp
call fcn.004ceb00
mov esi, eax
mov eax, dword [esp + 0x74]
add esp, 0x14
cmp eax, esi
je 0x470288
cmp eax, ebp
je 0x47027d
mov edi, dword [eax + 4]
mov ecx, eax
add eax, 4
dec edi
mov edx, edi
cmp edx, ebp
mov dword [eax], edi
jne 0x47027d
mov edx, dword [ecx]
push 1
call dword [edx]
cmp esi, ebp
mov dword [esp + 0x60], esi
je 0x470288
inc dword [esi + 4]
lea ecx, [esp + 0x18]
push ecx
lea edx, [esp + 0x18]
push edx
push ebp
lea eax, [esp + 0x2c]
or edi, 0xffffffff
push ebp
push str.intro_s2.dds
mov dword [0x878bdc], eax
mov dword [esp + 0x78], 0x7d0
mov dword [esp + 0x7c], ebp
mov dword [esp + 0x30], edi
mov dword [esp + 0x24], edi
call fcn.004ceb00
mov esi, eax
mov eax, dword [esp + 0x74]
add esp, 0x14
cmp eax, esi
je 0x4702f1
cmp eax, ebp
je 0x4702e6
mov ebx, dword [eax + 4]
mov ecx, eax
add eax, 4
dec ebx
mov edx, ebx
cmp edx, ebp
mov dword [eax], ebx
jne 0x4702e6
mov eax, dword [ecx]
push 1
call dword [eax]
cmp esi, ebp
mov dword [esp + 0x60], esi
je 0x4702f1
inc dword [esi + 4]
cmp dword [0x878be0], edi
jne 0x4706e2
lea ecx, [ecx]
mov al, byte [0x8ccc27]
test al, al
jne case.default.0x47072e
call fcn.0046f7c0
push str.There_be_French__Spanish__Dutch_and_English_ships_a_nlookin_for_able_bodied_lads_such_as_yerself.__Take_yer_pick_
mov esi, 0x8ebf58
call fcn.004f7660
add esp, 4
push 0
push 0x40
call fcn.00487950
mov eax, dword [0x8ccc18]
lea eax, [eax + eax*4]
shl eax, 4
cdq
and edx, 0x3ff
add eax, edx
sar eax, 0xa
mov dword [esp + 0x1c], eax
mov eax, dword [0x8cbdd8]
push 0
fld dword [eax + 4]
push 0xffffffffffffffff
fild dword [0x728380]
push 4
push 0xffffffffffffffff
mov dword [0x85c11c], 0x50
fmul st(1)
mov dword [0x8cbde0], eax
push 0x50
fidiv dword [0x8ccc1c]
fadd dword [0x715588]
fimul dword [esp + 0x30]
fmul dword [0x715584]
call fcn.005f275c
fstp st(0)
mov ecx, 0x198
sub ecx, eax
mov eax, dword [0x85c26c]
cdq
sub eax, edx
push ecx
sar eax, 1
push eax
push 0x86bb48
xor eax, eax
call fcn.004b0b40
push 0
push 0
push 0
call fcn.004d1a40
add esp, 0x34
push 5
call dword [sym.imp.KERNEL32.dll_Sleep]
mov eax, dword [0x8de30c]
cmp dword [esp + 0x1c], eax
mov edx, dword [0x8de310]
mov dword [esp + 0x18], ebp
jne 0x4703de
cmp dword [esp + 0x10], edx
je 0x470418
mov esi, eax
mov dword [esp + 0x1c], eax
mov dword [esp + 0x10], edx
call fcn.0042c6c0
cmp eax, ebp
je 0x470418
cmp eax, 0xffffffff
mov ebp, eax
je 0x470597
push 0xffffffffffffffff
push 0xbf800000
push 0xffffffffffffffff
push 0xffffffffffffffff
push 0xffffffffffffffff
push 0x36
push 0x8ca278
call fcn.00488920
add esp, 0x1c
cmp ebp, 0xffffffff
je 0x470597
mov edx, dword [esp + ebp*4 + 0x70]
push edx
push str.Sign_aboard_with_the__NATIONALITY.
mov esi, 0x8ebf58
call fcn.004f7660
push 0
push 0x1e
call fcn.00487950
mov eax, dword [0x8ccc18]
lea eax, [eax + eax*4]
shl eax, 4
cdq
and edx, 0x3ff
add esp, 0x10
add eax, edx
sar eax, 0xa
push 0
mov dword [esp + 0x18], eax
mov eax, dword [0x8cbdd8]
push 0x86bb48
push eax
mov dword [0x85c11c], 0x50
mov dword [0x8cbde0], eax
call fcn.0050ac80
fild dword [0x72837c]
fmul st(1)
fidiv dword [0x8ccc18]
fimul dword [esp + 0x14]
fmul dword [0x715584]
call fcn.005f275c
fstp st(0)
mov edi, dword [0x85c26c]
mov ecx, eax
lea eax, [edi - 0x10]
cmp ecx, eax
jl 0x47052a
nop
mov eax, dword [0x85c11c]
lea ecx, [eax + eax*8]
mov eax, 0x66666667
imul ecx
sar edx, 2
mov eax, edx
shr eax, 0x1f
add eax, edx
mov dword [0x85c11c], eax
imul eax, dword [0x8ccc18]
cdq
and edx, 0x3ff
add eax, edx
sar eax, 0xa
push 0
mov dword [esp + 0x18], eax
mov eax, dword [0x8cbdd8]
push 0x86bb48
push eax
mov dword [0x8cbde0], eax
call fcn.0050ac80
fild dword [0x72837c]
fmul st(1)
fidiv dword [0x8ccc18]
fimul dword [esp + 0x14]
fmul dword [0x715584]
call fcn.005f275c
fstp st(0)
mov edi, dword [0x85c26c]
mov ecx, eax
lea edx, [edi - 0x10]
cmp ecx, edx
jge 0x4704b0
mov ebx, ebp
shl ebx, 4
mov eax, dword [esp + ebx + 0x88]
cdq
sub eax, edx
mov esi, eax
mov eax, dword [esp + ebx + 0x80]
sar esi, 1
add esi, eax
mov eax, ecx
cdq
sub eax, edx
sar eax, 1
sub esi, eax
cmp esi, 8
jge 0x470559
mov esi, 8
lea eax, [esi + ecx]
lea edx, [edi - 8]
cmp eax, edx
jl 0x47056a
sub edi, ecx
sub edi, 8
mov esi, edi
mov eax, dword [0x85c11c]
mov ecx, dword [esp + ebx + 0x8c]
push 0
push 0xffffffffffffffff
push 1
push 0xffffffffffffffff
push eax
add ecx, dword [esp + ebx + 0x98]
push ecx
push esi
push 0x86bb48
xor eax, eax
call fcn.004b0b40
add esp, 0x20
push str.Menu
call fcn.0042e1a0
mov ebx, eax
mov eax, dword [0x86db5c]
add esp, 4
test eax, eax
je 0x470612
push ebx
push str.Menu
lea edx, [esp + 0xc8]
push str._s__03X
push edx
call dword [sym.imp.MSVCR71.dll_sprintf]
mov ecx, dword [0x86db5c]
mov eax, dword [ecx]
add esp, 0x10
lea edx, [esp + 0xc0]
push edx
mov edi, ecx
call dword [eax + 4]
mov ecx, dword [edi + 8]
mov esi, dword [ecx + eax*4]
test esi, esi
je 0x470612
lea ebx, [ebx]
mov eax, dword [esi + 4]
mov edx, dword [edi]
push eax
lea ecx, [esp + 0xc4]
push ecx
mov ecx, edi
call dword [edx + 8]
test al, al
jne 0x47060f
mov esi, dword [esi]
test esi, esi
jne 0x4705f0
jmp 0x470612
mov ebx, dword [esi + 8]
mov eax, dword [0x86e35c]
test eax, eax
je 0x470620
mov ebx, 0xd
mov eax, ebx
sub eax, 0xd
je 0x470650
sub eax, 0x118
je 0x47063a
sub eax, 2
jne 0x4706c0
inc ebp
jmp 0x47063d
add ebp, 3
and ebp, 0x80000003
jns 0x4706c0
dec ebp
or ebp, 0xfffffffc
inc ebp
jmp 0x4706c0
cmp ebp, 0xffffffff
je 0x4706c0
mov esi, dword [esp + ebp*4 + 0x70]
mov edi, dword [sym.imp.MSVCR71.dll_rand]
xor ebx, ebx
call edi
cdq
mov ecx, 0x2c
idiv ecx
mov eax, edx
shl eax, 5
movsx ecx, byte [eax + 0x862b74]
cmp ecx, esi
jne 0x470661
cmp byte [eax + 0x862b75], 5
jb 0x47068d
cmp dword [eax + 0x862b7c], 0x32
jge 0x470693
inc ebx
cmp ebx, 0x64
jl 0x470661
test dword [eax + 0x862b70], 0xc0000000
jne 0x470661
push 0xbf800000
push 0xffffffffffffffff
push 0xffffffffffffffff
push 0x2d
or esi, 0xffffffff
xor eax, eax
or ecx, 0xffffffff
mov dword [0x878be0], edx
call fcn.00488840
add esp, 0x10
mov eax, dword [esp + 0x18]
cmp eax, ebp
je 0x4706d5
push ebp
lea ecx, [esp + 0x24]
call fcn.0046fcb0
add esp, 4
cmp dword [0x878be0], 0xffffffff
je 0x470300
mov al, byte [0x8ccc27]
test al, al
jne case.default.0x47072e
mov eax, dword [0x728638]
mov ecx, dword [0x72863c]
sub esp, 0xc
mov edx, esp
mov dword [edx], eax
mov eax, dword [0x728640]
mov dword [edx + 4], ecx
push str.Welcome_aboard_Mr.__PCNAME.__We_sail_with_the_tide.
mov esi, 0x8ebf58
mov dword [edx + 8], eax
call fcn.004f7660
mov eax, dword [esp + ebp*4 + 0x80]
add esp, 0x10
cmp eax, 3
ja case.default.0x47072e
jmp dword [eax*4 + 0x4708f8]
mov ecx, dword [esp + ebp*4 + 0x2c]
mov eax, 0xd48
mov dword [esp + 0x10], 0
call fcn.004bc7a0
test eax, eax
je 0x470754
fld dword [eax + 0xc]
jmp 0x470760
fld dword [esp + 0x10]
jmp 0x470760
fmul dword [0x715698]
call fcn.005f275c
push eax
push 0xd48
mov edx, str.intro_s3_s.dds
jmp 0x470836
mov ecx, dword [esp + ebp*4 + 0x2c]
mov eax, 0xce4
mov dword [esp + 0x10], 0
call fcn.004bc7a0
test eax, eax
je 0x47079a
fld dword [eax + 0xc]
jmp 0x4707a0
fld dword [esp + 0x10]
mov edi, edi
fmul dword [0x715698]
call fcn.005f275c
push eax
push 0xce4
mov edx, str.intro_s3_f.dds
jmp 0x470836
mov ecx, dword [esp + ebp*4 + 0x2c]
mov eax, 0xc1c
mov dword [esp + 0x10], 0
call fcn.004bc7a0
test eax, eax
je 0x4707da
fld dword [eax + 0xc]
jmp 0x4707e0
fld dword [esp + 0x10]
mov edi, edi
fmul dword [0x715698]
call fcn.005f275c
push eax
push 0xc1c
mov edx, str.intro_s3_d.dds
jmp 0x470836
mov ecx, dword [esp + ebp*4 + 0x2c]
mov eax, 0xc80
mov dword [esp + 0x10], 0
call fcn.004bc7a0
test eax, eax
je 0x470817
fld dword [eax + 0xc]
jmp 0x470820
fld dword [esp + 0x10]
jmp 0x470820
fmul dword [0x715698]
call fcn.005f275c
push eax
push 0xc80
mov edx, str.intro_s3_e.dds
lea ebx, [esp + 0x28]
call fcn.0046f980
add esp, 8
lea esi, [esp + 0x20]
call fcn.0046f630
mov eax, dword [0x728820]
dec eax
mov dword [0x728820], eax
mov bl, byte [eax + 0x728814]
cmp bl, byte [0x727d98]
mov word [0x86e330], 0
je 0x4708d5
test bl, bl
mov edx, dword [0x8cb7c4]
mov ecx, dword [0x8cb7c0]
je 0x4708aa
mov byte [ecx + 0xb4], 1
mov byte [edx + 0xb4], 1
mov eax, dword [0x8ebfe8]
push eax
call fcn.00536dc0
mov ecx, dword [0x8ebfe8]
push ecx
mov ecx, dword [0x8cb7c4]
call fcn.00536dc0
jmp 0x4708d5
mov byte [ecx + 0xb4], 0
mov byte [edx + 0xb4], 0
mov eax, dword [0x8ebfe8]
push eax
call fcn.00537020
mov ecx, dword [0x8ebfe8]
push ecx
mov ecx, dword [0x8cb7c4]
call fcn.00537020
lea edi, [esp + 0x20]
mov byte [0x727d98], bl
mov byte [0x8cbdf4], 1
call fcn.00470910
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x1b4
ret