Function at 0x44a670
Capabilities:
Validate payment card number using luhn algorithm

Disassembly:
sub esp, 0x40
push ebx
push ebp
mov ebp, dword [esp + 0x4c]
lea ebp, [ebp + ebp*8]
shl ebp, 2
movsx ecx, word [ebp + 0x863b7a]
or eax, 0xffffffff
push esi
mov dword [esp + 0x14], ecx
mov ecx, dword [0x85c164]
mov dword [esp + 0x18], eax
mov dword [esp + 0x20], eax
push edi
mov eax, ecx
xor ebx, ebx
push 0x7290cc
shr eax, 2
and al, 1
and ecx, 0xfffffffb
push 0x10
xor esi, esi
push str.f4Depths
mov dword [esp + 0x20], ebx
mov dword [esp + 0x38], ebx
mov dword [esp + 0x3c], ebx
mov dword [esp + 0x40], esi
mov dword [esp + 0x44], ebx
mov byte [esp + 0x1e], 0
mov dword [esp + 0x4c], ebp
mov byte [esp + 0x1f], al
mov dword [esp + 0x2c], ebx
mov dword [0x85c164], ecx
call fcn.005bf910
mov eax, dword [ebp + 0x863b88]
add esp, 0xc
call fcn.0044a440
cmp eax, ebx
je 0x44a705
mov ecx, dword [eax + 4]
inc ecx
mov dword [esp + 0x14], eax
mov dword [eax + 4], ecx
push 0xc0
call fcn.005354b8
mov edi, eax
add esp, 4
cmp edi, ebx
je 0x44a763
mov eax, dword [0x8ec008]
mov ecx, dword [0x729444]
push ebx
push ebx
push ebx
push ebx
push 0xffffffffffffffff
push ebx
push ebx
mov dword [edi + 4], ebx
push ebx
mov dword [edi], 0x6ff14c
mov dword [edi + 0x1c], ebx
inc ecx
push ebx
mov dword [edi + 0x64], ebx
mov dword [0x729444], ecx
mov dword [edi + 0xbc], ebx
push eax
xor ebx, ebx
mov eax, str.xMark.dds
mov ecx, edi
call fcn.004be370
mov eax, dword [edi + 4]
inc eax
mov dword [esp + 0x2c], edi
mov dword [edi + 4], eax
push 0xc0
call fcn.005354b8
mov edi, eax
add esp, 4
cmp edi, ebx
je 0x44a7c1
mov eax, dword [0x8ec008]
mov ecx, dword [0x729444]
push ebx
push ebx
push ebx
push ebx
push 0xffffffffffffffff
push ebx
push ebx
mov dword [edi + 4], ebx
push ebx
mov dword [edi], 0x6ff14c
mov dword [edi + 0x1c], ebx
inc ecx
push ebx
mov dword [edi + 0x64], ebx
mov dword [0x729444], ecx
mov dword [edi + 0xbc], ebx
push eax
xor ebx, ebx
mov eax, str.townIcon_0.dds
mov ecx, edi
call fcn.004be370
mov eax, dword [edi + 4]
inc eax
mov dword [esp + 0x30], edi
mov dword [edi + 4], eax
push 0xc0
call fcn.005354b8
mov edi, eax
add esp, 4
cmp edi, ebx
je 0x44a81f
mov eax, dword [0x8ec008]
mov ecx, dword [0x729444]
push ebx
push ebx
push ebx
push ebx
push 0xffffffffffffffff
push ebx
push ebx
mov dword [edi + 4], ebx
push ebx
mov dword [edi], 0x6ff14c
mov dword [edi + 0x1c], ebx
inc ecx
push ebx
mov dword [edi + 0x64], ebx
mov dword [0x729444], ecx
mov dword [edi + 0xbc], ebx
push eax
xor ebx, ebx
mov eax, str.button_continueExit.kfm
mov ecx, edi
call fcn.004be370
mov eax, dword [edi + 4]
inc eax
mov dword [esp + 0x38], edi
mov dword [edi + 4], eax
mov edx, dword [0x728a84]
mov eax, dword [0x7283bc]
mov edi, dword [esp + 0x18]
mov dword [edx*4 + 0x7288f4], eax
mov ecx, dword [0x728a84]
inc ecx
cmp edi, ebx
mov dword [0x728a84], ecx
mov dword [0x7283bc], 0x500
jle 0x44ab15
imul edi, edi, 0x45c
mov ax, word [edi + 0x8162f8]
cmp ax, 0xffff
je 0x44ab15
movsx eax, ax
cdq
mov ecx, 9
idiv ecx
push ebx
lea ecx, [edx + edx*2]
shl ecx, 6
add ecx, 0x8cda18
call fcn.004bbbd0
cmp eax, ebx
je 0x44a899
mov ecx, dword [eax + 4]
mov esi, eax
inc ecx
mov dword [esp + 0x34], esi
mov dword [eax + 4], ecx
mov edx, dword [0x8ec008]
mov eax, dword [esi + 0xbc]
mov dword [esi + 0x18], edx
mov ecx, dword [0x8ec008]
mov dword [eax + 0x18], ecx
mov eax, esi
call fcn.004bb170
mov ebx, eax
call fcn.004bf5b0
mov ecx, dword [esi + 0xbc]
test ecx, ecx
je 0x44a8d0
push 1
call fcn.004bd3d0
mov byte [esi + 0x4c], 1
movsx eax, word [edi + 0x81631a]
mov ecx, esi
call fcn.004bd190
movsx eax, word [edi + 0x816318]
mov ecx, esi
call fcn.004bd130
xor edx, edx
mov dl, byte [edi + 0x816324]
mov ecx, esi
and edx, 0xffffff01
push edx
call fcn.004bce10
mov ebx, dword [esp + 0x18]
cmp ebx, 8
setl al
push eax
mov eax, ebx
call fcn.0045a080
movsx ecx, word [edi + 0x8162fc]
mov edi, dword [ecx*4 + 0x727694]
push eax
call fcn.004bceb0
mov eax, esi
call fcn.004bb170
mov byte [esp + 0x3c], 0x80
mov edx, dword [esp + 0x3c]
push edx
push eax
call fcn.004c2f50
mov ebp, dword [ebp + 0x863b88]
add esp, 8
cmp ebp, 1
mov byte [0x86bb48], 0
jl 0x44aacb
cmp ebp, 9
setle al
test al, al
je 0x44aacb
lea eax, [ebp - 1]
cmp eax, 8
ja case.default.0x44a976
jmp dword [eax*4 + 0x44b7dc]
mov eax, dword [str.henrymorgan]
mov ecx, dword [0x703ff8]
mov edx, dword [0x703ffc]
mov dword [0x86bb48], eax
mov dword [0x86bb4c], ecx
mov dword [0x86bb50], edx
jmp 0x44aafc
mov eax, dword [str.blackbeard]
mov ecx, dword [0x701940]
mov dx, word [0x701944]
mov dword [0x86bb48], eax
mov al, byte [0x701946]
mov dword [0x86bb4c], ecx
mov word [0x86bb50], dx
mov byte [0x86bb52], al
jmp 0x44aafc
mov ecx, dword [str.williamkidd]
mov edx, dword [0x703fec]
mov eax, dword [0x703ff0]
mov dword [0x86bb48], ecx
mov dword [0x86bb4c], edx
mov dword [0x86bb50], eax
jmp 0x44aafc
mov ecx, dword [str.jeanlafitte]
mov edx, dword [0x703fe0]
mov eax, dword [0x703fe4]
mov dword [0x86bb48], ecx
mov dword [0x86bb4c], edx
mov dword [0x86bb50], eax
jmp 0x44aafc
mov ecx, dword [str.stedebonnet]
mov edx, dword [0x703fd4]
mov eax, dword [0x703fd8]
mov dword [0x86bb48], ecx
mov dword [0x86bb4c], edx
mov dword [0x86bb50], eax
jmp 0x44aafc
mov ecx, dword [str.lollonnais]
mov edx, dword [0x703fc8]
mov eax, dword [0x703fcc]
mov dword [0x86bb48], ecx
mov dword [0x86bb4c], edx
mov dword [0x86bb50], eax
jmp 0x44aafc
mov ecx, dword [str.rocbrasiliano]
mov edx, dword [0x703fb8]
mov eax, dword [0x703fbc]
mov dword [0x86bb48], ecx
mov cx, word [0x703fc0]
mov dword [0x86bb4c], edx
mov dword [0x86bb50], eax
mov word [0x86bb54], cx
jmp 0x44aafc
mov edx, dword [str.bartroberts]
mov eax, dword [0x703fac]
mov ecx, dword [0x703fb0]
jmp 0x44aaeb
mov edx, dword [str.jackrackham]
mov eax, dword [0x703fa0]
mov ecx, dword [0x703fa4]
jmp 0x44aaeb
cmp ebp, 0x28
jl case.default.0x44a976
cmp ebp, 0x2a
setle al
test al, al
je case.default.0x44a976
mov edx, dword [str.ubervillain]
mov eax, dword [0x703f94]
mov ecx, dword [0x703f98]
mov dword [0x86bb48], edx
mov dword [0x86bb4c], eax
mov dword [0x86bb50], ecx
mov al, byte [0x86bb48]
test al, al
je case.default.0x44a976
push 0xffffffffffffffff
push 0x86bb48
mov ecx, esi
call fcn.004bd020
jmp case.default.0x44a976
mov ebx, dword [esp + 0x18]
mov edx, dword [0x728820]
mov al, byte [0x727d98]
mov byte [edx + 0x728814], al
mov edx, dword [0x728820]
inc edx
cmp al, 1
mov dword [0x728820], edx
je 0x44ab40
call fcn.004810a0
cmp ebx, 0xffffffff
mov byte [0x727d98], 1
mov byte [0x8cbdf4], 1
je 0x44ab60
mov eax, ebx
call fcn.00413080
lea ebx, [ebx]
mov esi, dword [0x85c268]
mov edi, dword [0x85c26c]
lea eax, [esp + 0x28]
push eax
lea ecx, [esp + 0x40]
push ecx
push 0
push 0
push str.pirateInfoBG.dds
mov word [0x86e330], 0
mov dword [esp + 0x3c], 0x300
mov dword [esp + 0x50], 0x400
call fcn.004ceb00
mov edx, dword [esp + 0x3c]
mov ecx, dword [esp + 0x50]
add esp, 0x14
push 0x200
push 0xffffffffffffffff
push esi
push edi
push 0
push 0
push edx
push ecx
push 0
push 0
push eax
call fcn.004af500
mov edx, dword [0x8ca494]
mov eax, dword [0x85c268]
mov ecx, dword [0x7283bc]
add esp, 0x2c
push edx
cdq
sub eax, edx
or ecx, 0x1000
mov dword [0x7283bc], ecx
mov ecx, eax
mov eax, dword [0x85c26c]
push 0
push 0x118
cdq
push 0
and edx, 7
add edx, eax
mov eax, dword [esp + 0x24]
push 0
push 0x71c71c7
sar ecx, 1
sar edx, 3
push eax
sub ecx, 0x40
sub edx, 0xa
mov eax, 0xffffff38
call fcn.004bc250
mov ecx, dword [0x85c268]
mov ebp, dword [0x85c26c]
mov eax, 0x55555556
imul ecx
mov edi, edx
shr edi, 0x1f
add edi, edx
mov eax, ecx
movsx ecx, word [0x86e330]
cdq
sub eax, edx
mov esi, eax
mov eax, ebp
cdq
and edx, 7
add eax, edx
sar esi, 1
mov ebx, eax
sub esi, edi
sar ebx, 3
sub esi, 0x30
sub ebx, 0x14
shl ecx, 1
mov word [ecx + 0x86e1a0], 3
mov word [ecx + 0x86e010], bx
mov word [ecx + 0x86de80], si
mov eax, ebp
cdq
and edx, 3
add eax, edx
sar eax, 2
lea edx, [eax + ebx - 0x20]
add esi, edi
mov word [ecx + 0x86dcf0], dx
mov word [ecx + 0x86db60], si
mov ecx, dword [esp + 0x40]
movsx eax, word [ecx + 0x863b7e]
cdq
mov esi, 0x1a
idiv esi
mov eax, dword [ecx + 0x863b88]
inc word [0x86e330]
sub esp, 0xc
add dl, 0x41
cmp eax, 0x28
jl 0x44acd2
lea eax, [eax + eax*2 - 0x78]
mov edx, esp
lea ecx, [eax*4 + 0x8cd178]
push str._EVILNAME
jmp 0x44ad1d
cmp eax, 0x1e
jl 0x44ad0c
lea eax, [eax + eax*2 - 0x5a]
lea ecx, [eax*4 + 0x8cd19c]
mov esi, dword [ecx]
mov eax, esp
mov dword [eax], esi
mov esi, dword [ecx + 4]
mov ecx, dword [ecx + 8]
movsx edx, dl
mov dword [eax + 4], esi
push edx
push str.Mr.__CHAR.__NPCNAME
mov esi, 0x8ebf58
mov dword [eax + 8], ecx
call fcn.004f7660
add esp, 0x14
jmp 0x44ad3a
lea eax, [eax + eax*2]
mov edx, esp
lea ecx, [eax*4 + 0x8cd100]
push str._TOP10
mov eax, dword [ecx]
mov dword [edx], eax
mov eax, dword [ecx + 4]
mov ecx, dword [ecx + 8]
mov dword [edx + 4], eax
mov esi, 0x8ebf58
mov dword [edx + 8], ecx
call fcn.004f7660
add esp, 0x10
mov eax, dword [0x85c268]
push 0
push 0xffffffffffffffff
cdq
push 1
sub eax, edx
push 0xffffffffffffffff
sar eax, 1
push 0x63
sub eax, 0x28
push eax
push 0x1e
push 0x86bb48
xor eax, eax
call fcn.004b0b40
mov eax, dword [esp + 0x74]
add esp, 0x20
mov byte [0x86bb48], 0
call fcn.0044a310
mov edi, 0x86bb48
dec edi
lea esp, [esp]
mov al, byte [edi + 1]
inc edi
test al, al
jne 0x44ad80
mov ebp, dword [esp + 0x40]
test byte [ebp + 0x863b80], 8
mov dx, word [0x6fc888]
mov word [edi], dx
je 0x44ae03
mov ax, word [ebp + 0x863b7c]
cmp ax, 0xffff
je 0x44ae03
movsx eax, ax
lea eax, [eax + eax*2]
lea ecx, [eax*4 + 0x8ddd08]
mov eax, dword [ecx]
sub esp, 0xc
mov edx, esp
mov dword [edx], eax
mov eax, dword [ecx + 4]
mov ecx, dword [ecx + 8]
mov dword [edx + 4], eax
push str.Home_port:__CITYNAME
mov esi, 0x8ebf58
mov dword [edx + 8], ecx
call fcn.004f7680
mov edi, 0x86bb48
add esp, 0x10
dec edi
mov al, byte [edi + 1]
inc edi
test al, al
jne 0x44ade6
movsx eax, word [ebp + 0x863b7c]
mov dx, word [0x6fc888]
mov word [edi], dx
mov dword [esp + 0x1c], eax
test byte [ebp + 0x863b80], 0x10
je 0x44ae47
mov ax, word [ebp + 0x863b82]
cmp ax, 0xffff
je 0x44ae47
movsx ecx, ax
push ecx
push str.Special_dueling_skill:__DUELINGSKILL
mov esi, 0x8ebf58
call fcn.004f7680
mov edi, 0x86bb48
add esp, 8
dec edi
mov al, byte [edi + 1]
inc edi
test al, al
jne 0x44ae35
mov dx, word [0x6fc888]
mov word [edi], dx
test byte [ebp + 0x863b80], 0x40
je 0x44afe6
mov cx, word [ebp + 0x863b9a]
cmp cx, 0xffff
je 0x44afe6
mov si, word [ebp + 0x863b98]
cmp si, cx
mov eax, dword [0x85c150]
mov edx, dword [ebp + 0x863b8c]
jne 0x44af0d
lea esi, [eax - 0x2ee0]
cmp edx, esi
mov esi, 0x8ebf58
jle 0x44aec3
movsx eax, cx
lea eax, [eax + eax*2]
lea ecx, [eax*4 + 0x8ddd08]
mov eax, dword [ecx]
sub esp, 0xc
mov edx, esp
mov dword [edx], eax
mov eax, dword [ecx + 4]
mov ecx, dword [ecx + 8]
mov dword [edx + 4], eax
push str.Last_seen_in__CITYNAME.
mov dword [edx + 8], ecx
call fcn.004f7680
add esp, 0x10
jmp 0x44afdb
sub eax, edx
mov edx, eax
mov eax, 0x57619f1
imul edx
sar edx, 7
mov eax, edx
shr eax, 0x1f
add eax, edx
push eax
movsx eax, cx
lea ecx, [eax + eax*2]
lea edx, [ecx*4 + 0x8ddd08]
mov ecx, dword [edx]
sub esp, 0xc
mov eax, esp
mov dword [eax], ecx
mov ecx, dword [edx + 4]
mov edx, dword [edx + 8]
mov dword [eax + 4], ecx
push str.Last_seen_in__CITYNAME___NUM_months_ago.
mov dword [eax + 8], edx
call fcn.004f7680
add esp, 0x14
jmp 0x44afdb
lea edi, [eax - 0x2ee0]
cmp edx, edi
jle 0x44af6f
movsx eax, cx
lea eax, [eax + eax*2]
lea ecx, [eax*4 + 0x8ddd08]
mov eax, dword [ecx]
sub esp, 0xc
mov edx, esp
mov dword [edx], eax
mov eax, dword [ecx + 4]
mov ecx, dword [ecx + 8]
mov dword [edx + 4], eax
mov dword [edx + 8], ecx
movsx eax, si
lea edx, [eax + eax*2]
lea eax, [edx*4 + 0x8ddd08]
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.Last_seen_traveling_from__CITYNAME_to__CITYNAME.
mov esi, 0x8ebf58
mov dword [ecx + 8], eax
call fcn.004f7680
add esp, 0x1c
jmp 0x44afdb
sub eax, edx
mov edx, eax
mov eax, 0x57619f1
imul edx
sar edx, 7
mov eax, edx
shr eax, 0x1f
add eax, edx
push eax
movsx eax, cx
lea ecx, [eax + eax*2]
lea edx, [ecx*4 + 0x8ddd08]
mov ecx, dword [edx]
sub esp, 0xc
mov eax, esp
mov dword [eax], ecx
mov ecx, dword [edx + 4]
mov edx, dword [edx + 8]
mov dword [eax + 4], ecx
mov dword [eax + 8], edx
movsx eax, si
lea eax, [eax + eax*2]
lea ecx, [eax*4 + 0x8ddd08]
mov eax, dword [ecx]
sub esp, 0xc
mov edx, esp
mov dword [edx], eax
mov eax, dword [ecx + 4]
mov ecx, dword [ecx + 8]
mov dword [edx + 4], eax
push str.Last_seen_traveling_from__CITYNAME_to__CITYNAME___NUM_months_ago.
mov esi, 0x8ebf58
mov dword [edx + 8], ecx
call fcn.004f7680
add esp, 0x20
movsx edx, word [ebp + 0x863b9a]
mov dword [esp + 0x1c], edx
push 0
push 0x34
call fcn.00487950
mov eax, dword [0x85c268]
push 0
push 0xffffffffffffffff
cdq
push 1
sub eax, edx
push 0xffffffffffffffff
sar eax, 1
push 0x37
sub eax, 8
push eax
push 0x1e
push 0x86bb48
xor eax, eax
call fcn.004b0b40
mov ebx, dword [esp + 0x40]
add esp, 0x28
test ebx, ebx
jle 0x44b229
imul ebx, ebx, 0x45c
mov ax, word [ebx + 0x8162f8]
cmp ax, 0xffff
mov dword [esp + 0x3c], ebx
je 0x44b229
test byte [ebp + 0x863b80], 2
je 0x44b229
movsx eax, ax
push eax
lea edi, [esp + 0x4c]
lea esi, [esp + 0x50]
lea eax, [esp + 0x2c]
lea ecx, [esp + 0x48]
call fcn.004e1c70
mov eax, dword [0x85c268]
mov ecx, dword [esp + 0x48]
imul eax, eax, 7
mov edx, dword [esp + 0x4c]
add esp, 4
push 0
push 0xffffffffffffffff
push ecx
push 0
add edx, 0xeaaaaaab
push 0xf8e38e39
push edx
cdq
and edx, 7
add eax, edx
mov ecx, eax
mov eax, dword [esp + 0x64]
sar ecx, 3
add ecx, eax
mov eax, dword [esp + 0x4c]
push eax
mov eax, 0xffffffe2
mov edx, 0x4b
call fcn.004bc250
mov ecx, dword [0x8ca494]
push ecx
push 0
mov ecx, eax
call fcn.004bc4e0
mov eax, dword [0x7287c8]
mov ecx, dword [0x7287cc]
sub esp, 0xc
mov edx, esp
mov dword [edx], eax
mov eax, dword [0x7287d0]
mov dword [edx + 4], ecx
movsx ecx, word [ebx + 0x8162f8]
push ecx
push str.Sails_on_the__SHIPTYPE:__SHIPNAME
mov esi, 0x8ebf58
mov dword [edx + 8], eax
call fcn.004f7660
mov eax, dword [0x85c268]
imul eax, eax, 7
add esp, 0x14
push 0
cdq
push 0xffffffffffffffff
push 1
and edx, 7
add eax, edx
push 0xffffffffffffffff
sar eax, 3
push 0x63
sub eax, 0x78
push eax
push 0x1e
push 0x86bb48
xor eax, eax
call fcn.004b0b40
mov al, byte [ebp + 0x863b80]
add esp, 0x20
test al, 4
je 0x44b229
xor ebp, ebp
xor edi, edi
mov ebx, 0x8d94d8
mov edi, edi
mov eax, dword [esp + 0x3c]
mov ecx, ebp
mov edx, 1
shl edx, cl
movsx ecx, word [eax + 0x816324]
test ecx, edx
je 0x44b216
test ebx, ebx
je 0x44b1c2
mov eax, dword [0x85c268]
imul eax, eax, 7
cdq
and edx, 7
add eax, edx
sar eax, 3
lea edx, [eax + edi - 0x5a]
mov dword [esp + 0x28], edx
push 0
fild dword [esp + 0x2c]
push 0x42700000
fild dword [ebx + 0x38]
fmul dword [0x715884]
faddp st(1)
call fcn.005f275c
push eax
mov eax, dword [0x85c26c]
cdq
and edx, 3
add eax, edx
sar eax, 2
mov dword [esp + 0x34], eax
fild dword [esp + 0x34]
fild dword [ebx + 0x34]
fmul dword [0x715884]
faddp st(1)
call fcn.005f275c
push eax
push ebx
call fcn.004bc130
push ebp
push str._UPGRADE
mov esi, 0x8ebf58
call fcn.004f7660
mov eax, dword [0x85c268]
imul eax, eax, 7
cdq
push 0
push 0xffffffffffffffff
and edx, 7
add eax, edx
sar eax, 3
push 1
lea eax, [eax + edi - 0x58]
push 0xffffffffffffffff
push 0x33
push eax
mov eax, dword [0x85c26c]
cdq
and edx, 3
add eax, edx
sar eax, 2
add eax, 0x14
push eax
push 0x86bb48
xor eax, eax
call fcn.004b0b40
add esp, 0x28
add edi, 0x10
add ebx, 0xc0
inc ebp
cmp ebx, 0x8d9ad8
jl 0x44b140
mov esi, dword [esp + 0x1c]
push 0x108
shl esi, 5
mov eax, dword [esi + 0x862b68]
push 0x118
push 0x1ce
xor edx, edx
call fcn.0044a5d0
mov edx, dword [esi + 0x862b6c]
add esp, 0xc
mov ebp, eax
push 0x2d
mov eax, 0x124
push 0xde
sub eax, edx
push 0x125
xor edx, edx
mov dword [esp + 0x48], ebp
call fcn.0044a5d0
mov dword [esp + 0x34], eax
mov eax, dword [0x8ca494]
xor edx, edx
mov ecx, 0x3e8
div ecx
add esp, 0xc
cmp edx, 0x1f4
jae 0x44b2cd
mov esi, dword [esp + 0x2c]
test esi, esi
je 0x44b2cd
fild dword [esi + 0x38]
push 0
push 0x42200000
fmul dword [0x715824]
fiadd dword [esp + 0x30]
call fcn.005f275c
fild dword [esi + 0x34]
push eax
fmul dword [0x715824]
fiadd dword [esp + 0x48]
call fcn.005f275c
push eax
push esi
call fcn.004bc130
mov cx, word [0x86e330]
mov edx, dword [esp + 0x28]
movsx eax, cx
shl eax, 1
mov word [eax + 0x86de80], dx
add edx, 0xa
mov word [eax + 0x86db60], dx
mov word [eax + 0x86e1a0], 1
mov word [eax + 0x86e010], bp
inc cx
lea esi, [ebp + 0xa]
mov word [eax + 0x86dcf0], si
mov word [0x86e330], cx
mov ecx, dword [0x816304]
mov eax, 0x10624dd3
imul ecx
sar edx, 6
mov eax, edx
push 0x108
shr eax, 0x1f
push 0x118
add eax, edx
push 0x70cb0
xor edx, edx
call fcn.0044a5d0
mov ecx, dword [0x816308]
mov edi, eax
mov eax, 0x431bde83
imul ecx
sar edx, 0x12
mov eax, edx
shr eax, 0x1f
add eax, edx
add esp, 0xc
push 0x2d
mov ecx, eax
push 0xde
mov eax, 0x124
push 0x125
sub eax, ecx
xor edx, edx
call fcn.0044a5d0
mov esi, dword [esp + 0x3c]
add esp, 0xc
test esi, esi
mov ebx, eax
je 0x44b3c4
fild dword [esi + 0x38]
lea edx, [ebx - 7]
mov dword [esp + 0x3c], edx
push 0
fmul dword [0x715824]
push 0x42200000
fiadd dword [esp + 0x44]
call fcn.005f275c
fild dword [esi + 0x34]
push eax
lea eax, [edi - 7]
fmul dword [0x715824]
mov dword [esp + 0x48], eax
fiadd dword [esp + 0x48]
call fcn.005f275c
push eax
push esi
call fcn.004bc130
mov si, word [0x86e330]
movsx eax, si
shl eax, 1
lea ecx, [ebx - 9]
mov word [eax + 0x86de80], cx
add ecx, 0x12
mov word [eax + 0x86db60], cx
mov ecx, dword [0x8ca494]
push ecx
mov ecx, dword [0x85c268]
lea edx, [edi - 9]
mov word [eax + 0x86e010], dx
add edx, 0x12
mov word [eax + 0x86dcf0], dx
mov edx, dword [esp + 0x24]
push edx
mov edx, dword [0x85c26c]
push 0x3c
push 0
push 0
mov word [eax + 0x86e1a0], 0
mov eax, dword [esp + 0x4c]
push 0
push eax
inc si
add ecx, 0xffffffeb
add edx, 0xffffffeb
mov eax, 0xfffffff6
mov word [0x86e330], si
call fcn.004bc250
mov si, word [0x86e330]
mov ecx, dword [0x85c268]
mov edx, dword [0x85c26c]
movsx eax, si
shl eax, 1
add edx, 0xffffffd5
add ecx, 0xffffffdd
mov word [eax + 0x86e010], dx
add edx, 0x26
mov word [eax + 0x86de80], cx
add ecx, 0x1c
inc si
mov word [0x86e330], si
mov esi, dword [0x8de30c]
cmp esi, 0xffffffff
mov word [eax + 0x86dcf0], dx
mov edx, dword [0x8de310]
mov word [eax + 0x86e1a0], 2
mov word [eax + 0x86db60], cx
jne 0x44b4a7
cmp edx, 0xffffffff
je 0x44b4e9
call fcn.0042c6c0
mov esi, eax
mov eax, dword [esp + 0x24]
cmp eax, esi
je 0x44b4e5
cmp eax, 2
jne 0x44b535
mov dword [esp + 0x20], 0
cmp esi, 3
je 0x44b4e5
cmp eax, 0xffffffff
jne 0x44b4e5
push eax
push 0xbf800000
push eax
push eax
push eax
push 0x36
push 0x8ca278
call fcn.00488920
add esp, 0x1c
mov dword [esp + 0x24], esi
mov eax, dword [esp + 0x24]
sub eax, 0
je 0x44b59d
dec eax
je 0x44b544
dec eax
jne 0x44b5d3
push str.Exit
mov esi, 0x8ebf58
call fcn.004f7660
mov ecx, dword [0x85c268]
mov edx, dword [0x85c26c]
add esp, 4
push 0
push 0xffffffffffffffff
push 4
push 0xffffffffffffffff
push 0x44
add ecx, 0xffffffd2
push ecx
add edx, 0xffffffe6
push edx
jmp 0x44b5c4
cmp esi, 2
jne 0x44b4c3
mov dword [esp + 0x20], 7
jmp 0x44b4c8
mov eax, dword [esp + 0x1c]
lea eax, [eax + eax*2]
lea ecx, [eax*4 + 0x8ddd08]
mov eax, dword [ecx]
sub esp, 0xc
mov edx, esp
mov dword [edx], eax
mov eax, dword [ecx + 4]
mov ecx, dword [ecx + 8]
mov dword [edx + 4], eax
push str._CITYNAME
mov esi, 0x8ebf58
mov dword [edx + 8], ecx
call fcn.004f7660
mov edx, dword [esp + 0x38]
push 0
push 0xffffffffffffffff
push 4
push 0xffc00000
push 0x33
add edx, 0xfffffff1
push edx
push ebp
push 0x86bb48
xor eax, eax
call fcn.004b0b40
add esp, 0x30
jmp 0x44b5d3
push str.You_are_here.
mov esi, 0x8ebf58
call fcn.004f7660
add esp, 4
push 0
push 0xffffffffffffffff
push 4
push 0xffc00000
push 0x33
add ebx, 0xfffffff6
push ebx
add edi, 3
push edi
xor eax, eax
push 0x86bb48
call fcn.004b0b40
add esp, 0x20
push 0
push 0
push 0
call fcn.004d1a40
add esp, 0xc
push 5
call dword [sym.imp.KERNEL32.dll_Sleep]
push 0
call fcn.0042e1a0
add esp, 4
cmp eax, 0x1b
je 0x44b5ff
cmp eax, 0x202
jne 0x44b620
push 0xffffffffffffffff
push 0xbf800000
push 0xffffffffffffffff
push 0xffffffffffffffff
push 0xffffffffffffffff
push 0x35
push 0x8ca270
call fcn.00488920
add esp, 0x1c
mov byte [esp + 0x12], 1
mov al, byte [0x8ccc27]
test al, al
jne 0x44b635
mov al, byte [esp + 0x12]
test al, al
je 0x44ab60
mov ecx, dword [esp + 0x14]
test ecx, ecx
je 0x44b650
dec dword [ecx + 4]
jne 0x44b648
mov eax, dword [ecx]
push 1
call dword [eax]
mov dword [esp + 0x14], 0
mov ebp, dword [esp + 0x2c]
test ebp, ebp
je 0x44b668
dec dword [ebp + 4]
jne 0x44b666
mov edx, dword [ebp]
push 1
mov ecx, ebp
call dword [edx]
xor ebp, ebp
mov edi, dword [esp + 0x30]
test edi, edi
je 0x44b67f
dec dword [edi + 4]
jne 0x44b67d
mov eax, dword [edi]
push 1
mov ecx, edi
call dword [eax]
xor edi, edi
mov esi, dword [esp + 0x34]
test esi, esi
je 0x44b696
dec dword [esi + 4]
jne 0x44b694
mov edx, dword [esi]
push 1
mov ecx, esi
call dword [edx]
xor esi, esi
push 0x7290bc
push 0x10
push str.f4Depths
call fcn.005bf910
mov al, byte [esp + 0x1f]
add esp, 0xc
test al, al
je 0x44b6b9
or dword [0x85c164], 4
mov eax, dword [0x728a84]
dec eax
mov dword [0x728a84], eax
mov eax, dword [eax*4 + 0x7288f4]
mov dword [0x7283bc], eax
mov eax, dword [0x728820]
dec eax
mov dword [0x728820], eax
mov bl, byte [eax + 0x728814]
cmp bl, byte [0x727d98]
je 0x44b751
test bl, bl
mov edx, dword [0x8cb7c4]
mov ecx, dword [0x8cb7c0]
je 0x44b726
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 0x44b751
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
mov byte [0x727d98], bl
mov byte [0x8cbdf4], 1
xor ebx, ebx
push ebx
call fcn.0042e1a0
add esp, 4
cmp eax, ebx
jne 0x44b760
mov ecx, dword [esp + 0x38]
cmp ecx, ebx
mov dword [0x86e35c], ebx
mov dword [0x86e360], ebx
je 0x44b78c
dec dword [ecx + 4]
jne 0x44b78c
mov edx, dword [ecx]
push 1
call dword [edx]
cmp esi, ebx
je 0x44b79d
dec dword [esi + 4]
jne 0x44b79d
mov eax, dword [esi]
push 1
mov ecx, esi
call dword [eax]
cmp edi, ebx
je 0x44b7ae
dec dword [edi + 4]
jne 0x44b7ae
mov edx, dword [edi]
push 1
mov ecx, edi
call dword [edx]
cmp ebp, ebx
je 0x44b7c0
dec dword [ebp + 4]
jne 0x44b7c0
mov eax, dword [ebp]
push 1
mov ecx, ebp
call dword [eax]
mov ecx, dword [esp + 0x14]
cmp ecx, ebx
je 0x44b7d3
dec dword [ecx + 4]
jne 0x44b7d3
mov edx, dword [ecx]
push 1
call dword [edx]
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x40
ret