Function at 0x45d210
Capabilities:
Encode data using xor

Disassembly:
sub esp, 0xbc
push ebx
push ebp
push esi
push edi
lea ebx, [ebx]
call fcn.0045cbd0
mov esi, 0x8e0192
lea ebx, [ebx]
mov ebp, 0x29
fld dword [0x729430]
fld dword [esi - 0x12]
fucompp
fnstsw ax
test ah, 0x44
jp 0x45d26f
fld dword [0x729434]
fld dword [esi - 0xe]
fucompp
fnstsw ax
test ah, 0x44
jp 0x45d26f
fld dword [0x729438]
fld dword [esi - 0xa]
fucompp
fnstsw ax
test ah, 0x44
jnp 0x45d46e
fild dword [0x85c7b0]
fld dword [0x8e84d4]
fadd dword [esi - 0x12]
fsubp st(1)
call fcn.005f275c
fild dword [0x85c7d0]
fld dword [0x8e84d8]
mov ecx, eax
fadd dword [esi - 0xe]
mov eax, 0x10624dd3
imul ecx
sar edx, 6
mov edi, edx
shr edi, 0x1f
fsubp st(1)
add edi, edx
call fcn.005f275c
mov ecx, eax
mov eax, 0x10624dd3
imul ecx
sar edx, 6
mov eax, edx
shr eax, 0x1f
add eax, edx
mov ecx, eax
mov edx, edi
imul ecx, eax
imul edx, edi
add ecx, edx
mov dword [esp + 0x10], ecx
fild dword [esp + 0x10]
fsqrt
call fcn.005f275c
mov bl, byte [esi]
cmp bl, 0x64
mov ecx, eax
jne 0x45d302
cmp ecx, 0x493e0
jge 0x45d302
mov eax, 0x88888889
imul ecx
add edx, ecx
sar edx, 5
mov edi, edx
shr edi, 0x1f
add edi, edx
jmp 0x45d307
mov edi, 0x13
mov al, byte [0x727728]
test al, al
je 0x45d3a4
movzx eax, bl
imul eax, edi
mov dword [esp + 0x10], eax
lea ecx, [esp + 0x20]
push ecx
fild dword [esp + 0x14]
sub esp, 8
fmul dword [0x715584]
fstp qword [esp]
call dword [sym.imp.MSVCR71.dll_modf]
fcom qword [0x7155a8]
add esp, 0xc
fnstsw ax
test ah, 5
jp 0x45d370
fcomp qword [0x7155f8]
mov dword [esp + 0x10], 1
fnstsw ax
test ah, 5
jnp 0x45d366
mov dword [esp + 0x10], 0
fild dword [esp + 0x10]
fsubr qword [esp + 0x20]
jmp 0x45d395
fcomp qword [0x7155f0]
mov dword [esp + 0x10], 1
fnstsw ax
test ah, 0x41
je 0x45d38d
mov dword [esp + 0x10], 0
fild dword [esp + 0x10]
fadd qword [esp + 0x20]
fstp qword [esp + 0x20]
fld qword [esp + 0x20]
call fcn.005f275c
mov edi, eax
test edi, edi
jl 0x45d46e
cmp edi, 0x13
jle 0x45d3b8
mov edi, 0x13
jmp 0x45d3c0
test edi, edi
je 0x45d46e
fild dword [esi - 6]
push 0
push 0
push ecx
fmul qword [0x715728]
lea eax, [esp + 0x8c]
fstp dword [esp]
call fcn.004dc670
movzx edx, byte [esi - 1]
mov dword [esp + 0x1c], edx
add esp, 0xc
push 0
fild dword [esp + 0x14]
push 0xffffffffffffffff
fmul dword [0x715884]
call fcn.005f275c
fld dword [esi - 0xa]
push eax
lea eax, [esp + 0x8c]
push eax
call fcn.005f275c
fld dword [0x8e84d8]
fadd dword [esi - 0xe]
push eax
call fcn.005f275c
fld dword [0x8e84d4]
fadd dword [esi - 0x12]
mov ecx, eax
mov eax, 0x10624dd3
imul ecx
sar edx, 6
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
push ecx
call fcn.005f275c
mov ecx, eax
mov eax, 0x10624dd3
imul ecx
sar edx, 6
mov eax, edx
shr eax, 0x1f
add eax, edx
push eax
movzx eax, byte [esi - 2]
cdq
mov ecx, 0xa
idiv ecx
imul edx, edx, 0x15
add edx, edi
mov ecx, dword [edx*4 + 0x878d00]
call fcn.004bc350
add esi, 0x14
dec ebp
jne 0x45d235
cmp esi, 0x8e84e6
jl 0x45d230
mov eax, dword [0x8cc9e4]
and eax, 0xfffffffa
xor ebp, ebp
xor ebx, ebx
mov dword [0x8cc9e4], eax
mov dword [esp + 0x10], ebx
lea esp, [esp]
mov eax, dword [ebx*4 + 0x85c790]
cmp eax, ebp
lea esi, [ebx*4 + 0x85c790]
mov dword [esp + 0x18], esi
je 0x45e20e
cmp ebx, dword [0x86bab0]
jge 0x45e20e
test byte [0x85c164], 4
jne 0x45e0d6
cmp ebx, ebp
jne 0x45d90d
mov ecx, dword [0x85c7d0]
mov eax, 0x10624dd3
imul ecx
mov ecx, dword [0x8bb8e4]
sar edx, 6
mov eax, edx
shr eax, 0x1f
add eax, edx
mov edx, dword [0x85c7b0]
sub ecx, eax
mov eax, 0x10624dd3
imul edx
sar edx, 6
mov eax, edx
shr eax, 0x1f
add edx, eax
mov eax, dword [0x8bb8f0]
sub eax, edx
jns 0x45d51c
neg eax
cmp ecx, ebp
jge 0x45d522
neg ecx
cmp eax, ecx
jle 0x45d52b
lea eax, [ecx + eax*2]
jmp 0x45d52e
lea eax, [eax + ecx*2]
cdq
sub eax, edx
mov ecx, eax
sar ecx, 1
shl ecx, 2
mov eax, 0x55555556
imul ecx
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
cmp ecx, 0x1770
mov dword [esp + 0x10], ecx
mov dword [0x8ca210], ecx
mov dword [0x8ca218], ebp
jge 0x45d58b
movsx eax, byte [0x86bb26]
lea esi, [eax + eax + 3]
mov eax, 0x1f40
cdq
idiv esi
mov dword [0x8ca218], 2
cmp ecx, eax
jge 0x45d5a6
mov dword [0x8ca218], 3
jmp 0x45d5a6
fild dword [esp + 0x10]
fcomp dword [0x71592c]
fnstsw ax
test ah, 5
jp 0x45d5a6
mov dword [0x8ca218], 1
push str.Sail
push 0x186
call fcn.0042d4d0
fmul dword [0x715928]
call fcn.005f275c
mov esi, dword [0x85c810]
add esi, eax
push str.Sail
push 0x187
mov dword [0x85c810], esi
mov dword [0x85c830], ebp
call fcn.0042d4d0
fcomp dword [0x715554]
add esp, 0x10
fnstsw ax
test ah, 0x41
je 0x45d5ff
cmp dword [0x85c870], ebp
je 0x45d7e6
mov eax, dword [0x85c164]
test ah, 0x10
jne 0x45d7e6
mov edx, dword [0x85c7d0]
mov eax, dword [0x85c7b0]
lea ecx, [esp + 0x1c]
push ecx
push edx
push eax
mov byte [0x8cc9e0], 0
call fcn.00475d10
mov esi, dword [0x727724]
add esp, 0xc
test al, al
je 0x45d661
mov edi, dword [esp + 0x1c]
mov ecx, edi
neg ecx
mov eax, esi
call fcn.004dcac0
sub dword [0x85c7b0], eax
mov ecx, 0x40000000
sub ecx, edi
mov eax, esi
call fcn.004dcac0
sub dword [0x85c7d0], eax
mov edi, dword [0x85c810]
mov eax, esi
mov ecx, edi
call fcn.004dcac0
add dword [0x85c7b0], eax
lea ecx, [edi + 0x40000000]
mov eax, esi
call fcn.004dcac0
mov ecx, dword [0x85c7d0]
add ecx, eax
mov eax, dword [0x85c7b0]
lea edx, [esp + 0x1c]
push edx
push ecx
push eax
mov dword [0x85c7d0], ecx
call fcn.00475d10
add esp, 0xc
test al, al
je 0x45d6df
mov esi, dword [0x727724]
mov edi, dword [0x85c810]
mov eax, esi
mov ecx, edi
call fcn.004dcac0
mov edx, dword [0x85c7b0]
sub edx, eax
lea ecx, [edi + 0x40000000]
mov eax, esi
mov dword [0x85c7b0], edx
call fcn.004dcac0
sub dword [0x85c7d0], eax
mov eax, 0x10624dd3
imul dword [0x85c7d0]
sar edx, 6
mov ecx, edx
mov edi, dword [0x72ed78]
shr ecx, 0x1f
add ecx, edx
mov eax, 0x10624dd3
imul dword [0x85c7b0]
sar edx, 6
mov eax, edx
mov esi, 1
mov dword [esp + 0x10], ecx
shr eax, 0x1f
add eax, edx
fild dword [esp + 0x10]
push esi
sub esp, 8
mov dword [esp + 0x20], eax
mov al, 1
fstp dword [esp + 4]
mov dword [0x85c830], esi
fild dword [esp + 0x20]
fstp dword [esp]
call fcn.004e8db0
call fcn.005f275c
mov ecx, eax
mov eax, dword [0x85c7f0]
cmp ecx, eax
jle 0x45d75b
sub ecx, eax
mov eax, 0x3414
cdq
add ecx, 2
idiv ecx
jmp 0x45d760
mov eax, 0x1a0a
mov edi, dword [0x8cc9e4]
lea ecx, [eax + eax*2]
shl ecx, 2
mov eax, 0x38e38e39
imul ecx
mov eax, dword [0x85c7d0]
sar edx, 1
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
mov edx, dword [0x85c870]
or edi, esi
mov esi, dword [0x85c890]
mov dword [0x727724], ecx
mov ecx, dword [0x85c7b0]
sub eax, esi
sub ecx, edx
mov dword [0x8cc9e4], edi
jns 0x45d7a9
neg ecx
cmp eax, ebp
jge 0x45d7af
neg eax
cmp ecx, eax
jle 0x45d7b8
lea eax, [eax + ecx*2]
jmp 0x45d7bb
lea eax, [ecx + eax*2]
mov ecx, dword [0x8bb970]
cdq
sub eax, edx
sar eax, 1
cmp ecx, 0xffffffff
je 0x45d7e1
cmp ecx, eax
jge 0x45d7e1
mov dword [0x8bb970], 0xffffffff
mov dword [0x85c870], ebp
jmp 0x45d7e6
mov dword [0x8bb970], eax
push str.Sail
push 0x186
call fcn.0042d4d0
fld dword [0x715554]
fucompp
add esp, 8
fnstsw ax
test ah, 0x44
jnp 0x45d80d
mov dword [0x85c870], ebp
mov ebp, dword [0x85c7b0]
mov eax, 0x10624dd3
imul ebp
sar edx, 6
mov esi, edx
shr esi, 0x1f
add esi, edx
lea ecx, [esi + 0x1f4]
mov eax, 0x10624dd3
imul ecx
sar edx, 6
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
mov eax, 0x10624dd3
imul dword [0x85c7d0]
sar edx, 6
mov edi, edx
shr edi, 0x1f
add edi, edx
lea edx, [edi + 0x1f4]
mov eax, 0x10624dd3
imul edx
sar edx, 6
mov eax, edx
shr eax, 0x1f
add eax, edx
mov dword [0x878cf8], eax
imul eax, eax, 0x3e8
mov dword [0x878cfc], ecx
imul ecx, ecx, 0x3e8
sub eax, edi
sub ecx, esi
jns 0x45d886
neg ecx
test eax, eax
jge 0x45d88c
neg eax
cmp ecx, eax
jle 0x45d895
lea eax, [eax + ecx*2]
jmp 0x45d898
lea eax, [ecx + eax*2]
cdq
sub eax, edx
sar eax, 1
cmp eax, 0xfa
jge 0x45d8ae
mov dword [0x8bb97c], 1
mov eax, dword [0x85c7d0]
mov edx, dword [0x816308]
mov ecx, dword [0x816304]
sub eax, edx
sub ebp, ecx
jns 0x45d8c7
neg ebp
test eax, eax
jge 0x45d8cd
neg eax
cmp ebp, eax
jle 0x45d8d6
lea eax, [eax + ebp*2]
jmp 0x45d8da
lea eax, [ebp + eax*2]
cdq
sub eax, edx
sar eax, 1
cmp eax, 0x51615
jge 0x45e0a5
mov al, byte [0x8cc9e0]
test al, al
jne 0x45e0a5
or dword [0x8cc9e4], 4
mov dword [0x85c870], 0
jmp 0x45e0a5
mov eax, 0x51615
lea ecx, [ebx + 6]
cdq
idiv ecx
mov ecx, 8
sub ecx, ebx
imul ecx, ecx, 0xaaaaaaa
test bl, 1
mov edi, eax
je 0x45d92e
neg ecx
test bl, 2
je 0x45d93c
mov eax, edi
cdq
sub eax, edx
sar eax, 1
add edi, eax
mov edx, dword [0x85c810]
lea ebp, [edx + ecx]
mov eax, edi
mov ecx, ebp
call fcn.004dcac0
mov esi, dword [0x85c7b0]
sub esi, eax
lea ecx, [ebp + 0x40000000]
mov eax, edi
mov dword [esp + 0x14], ecx
call fcn.004dcac0
mov ecx, dword [0x85c7d0]
sub ecx, eax
test byte [0x8cc9e4], 4
je 0x45d986
mov esi, dword [0x816304]
mov ecx, dword [0x816308]
jmp 0x45d9c9
mov eax, dword [0x85c164]
test ah, 0x10
je 0x45d9c9
mov eax, dword [esp + 0x18]
cmp dword [eax], 2
jne 0x45d9c9
mov eax, edi
mov ecx, ebp
call fcn.004dcac0
mov esi, dword [0x878cfc]
mov ecx, dword [esp + 0x14]
imul esi, esi, 0xf4240
sub esi, eax
mov eax, edi
call fcn.004dcac0
mov ecx, dword [0x878cf8]
imul ecx, ecx, 0xf4240
sub ecx, eax
mov edx, dword [ebx*4 + 0x85c7b0]
test edx, edx
jne 0x45d9e7
mov dword [ebx*4 + 0x85c7b0], esi
mov dword [ebx*4 + 0x85c7d0], ecx
jmp 0x45e0a5
sub ecx, dword [ebx*4 + 0x85c7d0]
sub esi, edx
mov eax, ecx
mov edx, esi
jns 0x45d9f8
neg edx
test eax, eax
jge 0x45d9fe
neg eax
cmp edx, eax
jle 0x45da07
lea eax, [eax + edx*2]
jmp 0x45da0a
lea eax, [edx + eax*2]
cdq
sub eax, edx
mov edi, eax
mov eax, ecx
sar edi, 1
mov ecx, esi
mov dword [esp + 0x14], edi
call fcn.004dcb20
lea ebp, [ebx*4 + 0x85c830]
mov esi, eax
mov eax, dword [ebp]
test eax, eax
je 0x45da36
mov ecx, dword [0x727724]
jmp 0x45da40
lea ecx, [ebx + 8]
imul ecx, dword [0x727724]
cmp edi, ecx
mov ecx, dword [0x8bb978]
jle 0x45daf8
test byte [0x8cc9e4], 2
je 0x45daf8
mov edx, dword [0x85c164]
test dh, 0x10
je 0x45da72
cmp ecx, 0x1f3
jge 0x45daf8
cmp edi, 0xfde8
jle 0x45da82
fld dword [0x70deb0]
jmp 0x45da8c
fild dword [esp + 0x14]
fmul dword [0x715924]
fild dword [0x727724]
fmul st(1)
call fcn.005f275c
fstp st(0)
mov ecx, esi
mov edi, eax
mov dword [ebx*4 + 0x85c810], esi
call fcn.004dcac0
add dword [ebx*4 + 0x85c7b0], eax
lea ecx, [esi + 0x40000000]
mov eax, edi
call fcn.004dcac0
mov edi, dword [ebx*4 + 0x85c7d0]
mov edx, dword [esp + 0x18]
add edi, eax
mov eax, dword [0x8cc9e4]
mov dword [ebx*4 + 0x85c7d0], edi
mov esi, dword [edx]
xor ecx, ecx
cmp esi, 2
setne cl
add ecx, 0x265
or eax, 1
mov dword [ebp], ecx
mov dword [0x8cc9e4], eax
jmp 0x45e0a5
mov edx, dword [0x85c164]
test dh, 0x10
je 0x45e068
mov edx, dword [esp + 0x18]
cmp dword [edx], 2
je 0x45db1d
cmp dword [0x86bab0], 5
jge 0x45e068
cmp eax, 0x268
je 0x45db37
cmp ecx, 0x1f4
jge 0x45db37
mov dword [ebx*4 + 0x85c850], 0
inc ecx
cmp ecx, 0x1f4
mov dword [ebp], 0x268
mov dword [0x8bb978], ecx
jne 0x45dfe7
mov eax, dword [0x85c270]
cmp eax, dword [0x878cfc]
mov edi, 0x80000000
jne 0x45dc35
mov ecx, dword [0x85c2b0]
cmp ecx, dword [0x878cf8]
jne 0x45dc35
mov eax, dword [0x85c380]
test edi, eax
jne 0x45dc35
mov edi, eax
mov eax, dword [0x85c384]
or edi, 0x80000000
mov dword [0x85c380], edi
mov edi, 0xb
sub edi, eax
imul edi, edi, 0x3e8
lea edx, [eax + eax*2]
push edi
lea eax, [edx*4 + 0x8cd100]
mov edx, dword [eax]
sub esp, 0xc
mov ecx, esp
mov dword [ecx], edx
mov edx, dword [eax + 4]
mov eax, dword [eax + 8]
mov dword [ecx + 4], edx
push str.A_few_hours_of_digging_uncovers__TOP10s_buried_treasure_worth__NUM_gold_pieces__n
mov esi, 0x8ebf58
mov dword [ecx + 8], eax
call fcn.004f7660
add esp, 0x14
mov ecx, 0x2c
call fcn.00487df0
call fcn.004527f0
mov ecx, dword [0x86bab4]
mov eax, dword [0x863ff8]
mov esi, dword [0x85c384]
push 0
push edi
add ecx, edi
add eax, edi
inc word [0x864010]
push esi
push 0x2c
mov dword [0x86bab4], ecx
mov dword [0x863ff8], eax
call fcn.0043a8d0
imul esi, esi, 0x1c
mov ecx, dword [esi + 0x863ffc]
lea eax, [esi + 0x863ffc]
add esp, 0x10
or ecx, 1
mov dword [eax], ecx
mov edi, 0x80000000
mov ecx, dword [0x878cfc]
cmp dword [0x85c3b8], ecx
jne 0x45dc96
mov edx, dword [0x878cf8]
cmp dword [0x85c3f8], edx
jne 0x45dc96
mov eax, dword [0x85c4c8]
test edi, eax
jne 0x45dc96
or eax, edi
mov dword [0x85c4c8], eax
movsx eax, word [0x86bb1c]
push eax
push str.You_have_rescued_your_long_lost__RELATIVE_
mov esi, 0x8ebf58
call fcn.004f7660
movsx ecx, word [0x86bb1c]
push 1
push 0xffffffffffffffff
push ecx
call fcn.00451db0
add esp, 0x14
mov dword [0x8ccc38], 1
mov edx, dword [0x878cfc]
cmp dword [0x85c500], edx
jne 0x45dd4d
mov eax, dword [0x878cf8]
cmp dword [0x85c540], eax
jne 0x45dd4d
mov eax, dword [0x85c610]
test edi, eax
jne 0x45dd4d
or eax, edi
mov dword [0x85c610], eax
call dword [sym.imp.MSVCR71.dll_rand]
cdq
mov ecx, 0x3e8
idiv ecx
mov ecx, dword [0x86bab4]
mov eax, dword [0x863ff8]
mov esi, 0x8ebf58
add edx, 0xc350
add ecx, edx
add eax, edx
movsx edx, word [0x86bb1e]
inc word [0x864010]
push edx
push str.A_thorough_search_of_the_legendary_lost_city_of_the__LOSTCITY_reveals_treasure_worth_over_50_000_gold_pieces__n
mov dword [0x86bab4], ecx
mov dword [0x863ff8], eax
call fcn.004f7660
mov ecx, 0x20
call fcn.00487df0
push 0
call fcn.0044f9a0
mov ax, word [0x86bb1e]
add esp, 0xc
movsx ecx, ax
push 0
push 0
push ecx
inc ax
push 0x2e
mov word [0x86bb1e], ax
call fcn.0043a8d0
add esp, 0x10
mov eax, dword [0x878cfc]
cmp dword [0x85c648], eax
jne 0x45dfe7
mov ecx, dword [0x878cf8]
cmp dword [0x85c688], ecx
jne 0x45dfe7
mov eax, dword [0x85c758]
test eax, eax
js 0x45dfe7
push str.You_have_tracked_the_evil_Marquis_Montalban_to_his_fortified_hideout._An_army_of_indian_mercenaries_blocks_your_path__n
mov esi, 0x8ebf58
call fcn.004f7660
add esp, 4
push 0
push 0x20
call fcn.00487950
mov eax, dword [0x85c268]
push 0
push 0
cdq
push 0xffffffffffffffff
push 0
push 0
and edx, 3
add eax, edx
push 0xffffffffffffffff
sar eax, 2
inc eax
push 0
push str.snap
push eax
mov eax, dword [0x85c26c]
cdq
and edx, 3
add eax, edx
sar eax, 2
push eax
call fcn.00430160
mov al, byte [0x85c158]
inc al
mov dl, 5
imul dl
push 1
mov byte [0x8630f6], al
call fcn.0045ca10
mov edi, dword [0x85c164]
and edi, 0xffff7fff
add esp, 0x34
mov dword [0x85c164], edi
call fcn.004a2920
mov eax, dword [0x728a84]
dec eax
mov dword [0x728a84], eax
mov eax, dword [eax*4 + 0x7288f4]
lea ecx, [esp + 0x70]
mov dword [0x7283bc], eax
push ecx
mov eax, 0x2c
call fcn.00438d90
mov ecx, dword [eax]
mov edx, dword [eax + 4]
mov eax, dword [eax + 8]
add esp, 4
cmp ecx, 1
mov dword [esp + 0x34], eax
mov dword [0x86bab0], edx
jne 0x45dfdd
mov eax, 0x8cccd0
push str.You_are_a_master_tactician__sir._Truly_I_have_done_your_family_a_terrible_injustice.
mov dword [esp + 0x3c], eax
mov dword [esp + 0x40], eax
mov dword [esp + 0x44], eax
mov dword [esp + 0x48], 0
mov byte [esp + 0x58], 0
call fcn.004f7660
add esp, 4
push str.I_give_you_100_000_gold_pieces_which_are_rightfully_yours.
call fcn.004f7680
add esp, 4
push str.Among_my_crew_are_eight_specialists_of_extraordinary_skill__henceforth_they_will_serve_you.
call fcn.004f7680
add esp, 4
push str.I_myself_will_serve_as_your_cabin_steward._n
call fcn.004f7680
mov edi, 0x28
add esp, 4
mov ecx, edi
call fcn.00487df0
mov ebx, 0x86bb48
lea eax, [esp + 0x3c]
call fcn.00412f10
push str.You_reach_the_safety_of_the_jungle_and_rendezvous_with_the_remainder_of_your_crew___the_Marquis_taunts_still_ringing_in_your_ears.
call fcn.004f7660
add esp, 4
push str.I_will_return__you_vow_as_you_cast_off_from_the_shore._n
call fcn.004f7680
add esp, 4
mov ecx, edi
call fcn.00487df0
lea eax, [esp + 0x40]
call fcn.00412f10
push str.Marquis_Montalban
call fcn.004f7660
add esp, 4
lea ecx, [esp + 0x38]
push ecx
push 0
push 0xffffffffffffffff
push 0x2a
push 0
push 5
push 0xffffffffffffffff
push 4
lea edx, [esp + 0x80]
push 0xffffffffffffffff
push edx
mov ecx, 6
call fcn.0041b1d0
mov ecx, dword [eax + 4]
mov edx, dword [eax + 8]
mov esi, dword [eax]
push 0
mov dword [esp + 0x5c], ecx
mov dword [esp + 0x60], edx
mov dword [0x8ccc38], 2
call fcn.004756c0
add esp, 0x2c
push 0
call fcn.0045c1d0
add esp, 4
cmp esi, 1
jne 0x45e5b7
mov ecx, dword [0x85c758]
mov eax, dword [0x85c164]
push 0
push 0
or ecx, 0x80000000
or eax, 0x80000
push 0xffffffffffffffff
push 0x33
mov dword [0x85c758], ecx
mov dword [0x86bb34], 0xff
mov dword [0x85c164], eax
call fcn.0043a8d0
add esp, 0x10
mov ecx, esi
mov eax, 0x85c9a4
cmp dword [eax - 0x14], edi
jne 0x45df91
cmp dword [eax], 0x2a
je 0x45df9e
add eax, 0x20
inc ecx
cmp eax, 0x85d184
jl 0x45df87
jmp 0x45dfad
test ecx, ecx
jle 0x45dfad
push 1
push ecx
call fcn.0044d240
add esp, 8
mov edx, dword [0x86bab4]
mov ecx, dword [0x863ff8]
mov eax, 0x186a0
add edx, eax
add ecx, eax
lea esi, [esp + 0x38]
mov dword [0x86bab4], edx
mov dword [0x863ff8], ecx
call fcn.0040a610
mov ebx, dword [esp + 0x10]
jmp 0x45dfe7
push 0
call fcn.004756c0
add esp, 4
cmp dword [0x8bb978], 0x1f4
jl 0x45e0a5
mov eax, ebx
and eax, 0x80000003
jns 0x45e005
dec eax
or eax, 0xfffffffc
inc eax
add eax, 0x1a5
mov dword [ebp], eax
and dword [0x85c164], 0xffffefff
xor eax, eax
mov dword [0x8bb978], eax
mov dword [0x8bb97c], eax
mov esi, 0x85c7d0
jmp 0x45e030
mov ecx, dword [0x85c810]
mov eax, 0x7a120
call fcn.004dcac0
sub dword [esi - 0x20], eax
mov ecx, dword [0x85c810]
add ecx, 0x40000000
mov eax, 0x7a120
call fcn.004dcac0
sub dword [esi], eax
add esi, 4
cmp esi, 0x85c7f0
jl 0x45e030
jmp 0x45e0a5
mov dword [ebp], 0x267
mov eax, dword [ebx*4 + 0x85c870]
test eax, eax
jne 0x45e087
mov edx, dword [0x85c810]
mov dword [ebx*4 + 0x85c810], edx
cmp ecx, 0x1f4
jle 0x45e0a5
mov eax, ebx
and eax, 0x80000003
jns 0x45e09d
dec eax
or eax, 0xfffffffc
inc eax
add eax, 0x1a5
mov dword [ebp], eax
cmp dword [ebx*4 + 0x85c830], 0x268
lea eax, [ebx*4 + 0x14]
je 0x45e0c0
lea eax, [ebx*4 + 0x3c]
mov ecx, dword [ebx*4 + 0x85c850]
mov esi, dword [esp + 0x18]
add ecx, eax
mov dword [ebx*4 + 0x85c850], ecx
xor ebp, ebp
mov ecx, dword [ebx*4 + 0x85c7d0]
mov eax, 0x10624dd3
imul ecx
sar edx, 6
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
mov edi, dword [0x72ed78]
mov dword [esp + 0x14], ecx
mov ecx, dword [ebx*4 + 0x85c7b0]
mov eax, 0x10624dd3
fild dword [esp + 0x14]
imul ecx
sar edx, 6
mov eax, edx
shr eax, 0x1f
add eax, edx
push 1
sub esp, 8
mov dword [esp + 0x1c], eax
mov al, 1
fstp dword [esp + 4]
fild dword [esp + 0x1c]
fstp dword [esp]
call fcn.004e8db0
call fcn.005f275c
cmp eax, ebp
mov dword [ebx*4 + 0x85c7f0], eax
mov edi, eax
jne 0x45e146
mov edi, 0xfffffff6
mov ecx, dword [ebx*4 + 0x85c810]
sub ecx, 0x80000000
mov dword [esp + 0x14], ecx
fild dword [esp + 0x14]
push ebp
push ebp
push ecx
fmul qword [0x715728]
lea eax, [esp + 0xb0]
fstp dword [esp]
call fcn.004dc670
mov edx, dword [ebx*4 + 0x85c850]
mov eax, dword [ebx*4 + 0x85c830]
mov esi, dword [esi]
add esp, 0xc
push edx
push eax
mov eax, esi
dec eax
neg eax
sbb eax, eax
and eax, 0xfffffffb
add eax, 0x64
lea ecx, [eax + eax*2]
shl ecx, 1
mov eax, 0x38e38e39
imul ecx
sar edx, 1
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
push ecx
mov ecx, dword [ebx*4 + 0x85c7d0]
lea edx, [esp + 0xb0]
push edx
mov eax, 0x10624dd3
imul ecx
mov ecx, dword [ebx*4 + 0x85c7b0]
sar edx, 6
mov eax, edx
shr eax, 0x1f
add eax, edx
push edi
push eax
mov eax, 0x10624dd3
imul ecx
sar edx, 6
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
push ecx
mov ecx, dword [esi*4 + 0x879048]
call fcn.004bc350
cmp ebx, ebp
jne 0x45e20e
mov edx, dword [0x85c790]
mov eax, dword [edx*4 + 0x879048]
push 0xffffffffffffffff
push eax
call fcn.004a2cb0
add esp, 8
inc ebx
cmp ebx, 8
mov dword [esp + 0x10], ebx
jl 0x45d4a0
cmp dword [0x85c7f0], ebp
jg 0x45e5d5
mov al, byte [0x8cc9e0]
test al, al
je 0x45e48f
mov ecx, dword [0x85c7d0]
mov eax, 0x10624dd3
imul ecx
sar edx, 6
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
mov edi, dword [0x72ed78]
mov dword [esp + 0x18], ecx
mov ecx, dword [0x85c7b0]
mov eax, 0x10624dd3
fild dword [esp + 0x18]
imul ecx
sar edx, 6
mov eax, edx
shr eax, 0x1f
add eax, edx
push 1
sub esp, 8
mov dword [esp + 0x1c], eax
mov al, 1
fstp dword [esp + 4]
fild dword [esp + 0x1c]
fstp dword [esp]
call fcn.004e8db0
call fcn.005f275c
test eax, eax
jg 0x45e443
lea esp, [esp]
mov ecx, dword [0x85c7d0]
mov eax, 0x10624dd3
imul ecx
sar edx, 6
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
mov dword [esp + 0x14], ecx
mov ecx, dword [0x85c7b0]
mov eax, 0x10624dd3
fild dword [esp + 0x14]
imul ecx
sar edx, 6
push 1
mov eax, edx
shr eax, 0x1f
push 0x727614
add eax, edx
sub esp, 8
mov dword [esp + 0x24], eax
mov eax, dword [0x72ed78]
fstp dword [esp + 4]
fild dword [esp + 0x24]
fstp dword [esp]
call fcn.004e9000
test al, al
je 0x45e443
cmp ebp, 0x7d0
jge 0x45e443
mov ebx, dword [0x81630c]
test ebx, ebx
mov esi, 0x3d09
mov ecx, ebx
jns 0x45e329
mov esi, 0xffffc2f7
and ecx, 0x7fffffff
test ecx, 0x40000000
je 0x45e33a
mov edx, 0x7fffffff
sub edx, ecx
mov ecx, edx
mov eax, esi
cdq
xor eax, edx
sub eax, edx
cmp eax, 0x7d00
mov edi, 1
jle 0x45e367
lea ecx, [ecx]
mov eax, esi
cdq
sub eax, edx
sar eax, 1
mov esi, eax
cdq
xor eax, edx
sub eax, edx
add edi, edi
cmp eax, 0x7d00
jg 0x45e350
mov edx, esi
call fcn.00495330
imul eax, edi
sub dword [0x85c7b0], eax
lea ecx, [ebx + 0x40000000]
test ecx, ecx
mov esi, 0x3d09
jns 0x45e391
mov esi, 0xffffc2f7
and ecx, 0x7fffffff
test ecx, 0x40000000
je 0x45e3a2
mov eax, 0x7fffffff
sub eax, ecx
mov ecx, eax
mov eax, esi
cdq
xor eax, edx
sub eax, edx
cmp eax, 0x7d00
mov edi, 1
jle 0x45e3cc
mov eax, esi
cdq
sub eax, edx
sar eax, 1
mov esi, eax
cdq
xor eax, edx
sub eax, edx
add edi, edi
cmp eax, 0x7d00
jg 0x45e3b5
mov edx, esi
call fcn.00495330
imul eax, edi
mov ecx, dword [0x85c7d0]
sub ecx, eax
mov eax, 0x10624dd3
imul ecx
sar edx, 6
mov dword [0x85c7d0], ecx
mov ecx, edx
mov edi, dword [0x72ed78]
shr ecx, 0x1f
add ecx, edx
mov eax, 0x10624dd3
imul dword [0x85c7b0]
sar edx, 6
mov eax, edx
mov dword [esp + 0x18], ecx
shr eax, 0x1f
add eax, edx
fild dword [esp + 0x18]
push 1
sub esp, 8
mov dword [esp + 0x1c], eax
mov al, 1
fstp dword [esp + 4]
add ebp, 0xf
fild dword [esp + 0x1c]
fstp dword [esp]
call fcn.004e8db0
call fcn.005f275c
test eax, eax
jle 0x45e2a0
mov ebx, dword [0x81630c]
mov edi, ebp
imul edi, edi, 0x3e8
lea ebp, [ebx + 0x40000000]
mov esi, 0x85c7d4
lea esp, [esp]
mov eax, edi
mov ecx, ebx
call fcn.004dcac0
sub dword [esi - 0x20], eax
mov eax, edi
mov ecx, ebp
call fcn.004dcac0
sub dword [esi], eax
add esi, 4
cmp esi, 0x85c7f0
jl 0x45e460
mov al, byte [0x8cc9e0]
test al, al
jne 0x45e5d5
mov ecx, dword [0x85c7d0]
mov eax, 0x10624dd3
imul ecx
sar edx, 6
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
mov dword [esp + 0x14], ecx
mov ecx, dword [0x85c7b0]
mov eax, 0x10624dd3
fild dword [esp + 0x14]
imul ecx
sar edx, 6
push 1
mov eax, edx
shr eax, 0x1f
push 0x727614
add eax, edx
sub esp, 8
mov dword [esp + 0x24], eax
mov eax, dword [0x72ed78]
fstp dword [esp + 4]
fild dword [esp + 0x24]
fstp dword [esp]
call fcn.004e9000
test al, al
je 0x45e5d5
mov edx, dword [0x85c790]
mov eax, dword [edx*4 + 0x879048]
xor ecx, ecx
mov dword [0x85c830], ecx
mov dword [0x85c834], ecx
mov dword [0x85c838], ecx
mov dword [0x85c83c], ecx
mov dword [0x85c840], ecx
mov dword [0x85c844], ecx
mov dword [0x85c848], ecx
push 0xffffffffffffffff
push eax
mov dword [0x85c84c], ecx
call fcn.004a2cb0
push str.What_shall_we_do_captain__n_Return_to_the_ship._n_Turn_about_and_head_inland._n
mov esi, 0x8ebf58
call fcn.004f7660
mov ecx, dword [0x85c268]
add esp, 0xc
push 0
push 0
mov eax, 0x2aaaaaab
imul ecx
mov eax, dword [0x85c26c]
push 0xffffffffffffffff
push 0
push 0
mov ecx, edx
push 0xffffffffffffffff
push 0
shr ecx, 0x1f
lea edx, [edx + ecx + 1]
push str.snap
push edx
cdq
and edx, 3
add eax, edx
sar eax, 2
push eax
call fcn.00430160
add esp, 0x28
test eax, eax
je 0x45e5f1
mov eax, 0x85c810
add dword [eax], 0x80000000
mov ecx, dword [eax - 0x60]
mov dword [eax + 0x60], ecx
mov edx, dword [eax - 0x40]
mov dword [eax + 0x80], edx
add eax, 4
cmp eax, 0x85c830
jl 0x45e593
jmp 0x45d220
push 1
call fcn.0045ca10
add esp, 4
lea esi, [esp + 0x38]
call fcn.0040a610
pop edi
pop esi
pop ebp
pop ebx
add esp, 0xbc
ret
mov eax, dword [0x8cc9e4]
test al, 1
je 0x45e5e3
or eax, 2
jmp 0x45e5e6
and eax, 0xfffffffd
mov dword [0x8cc9e4], eax
and al, 5
cmp al, 4
jne 0x45e5fb
push 1
call fcn.0045ca10
add esp, 4
pop edi
pop esi
pop ebp
pop ebx
add esp, 0xbc
ret