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

Disassembly:
sub esp, 0xf0
push ebx
push ebp
push esi
push edi
mov edi, dword [esp + 0x104]
cmp edi, 1
je 0x451dd3
cmp edi, 3
je 0x451dd3
xor ebx, ebx
mov byte [esp + 0x17], bl
jmp 0x451dda
mov byte [esp + 0x17], 1
xor ebx, ebx
mov dl, byte [esp + 0x17]
xor eax, eax
cmp dl, bl
setne al
push 0x3f800000
add eax, 0x3b
mov esi, eax
call fcn.00488e30
add esp, 4
push 0xffffffffffffffff
push 0xffffffffffffffff
push 0xffffffffffffffff
mov eax, esi
call fcn.004a1fe0
mov eax, dword [0x8cccd8]
add esp, 0xc
cmp eax, ebx
jne 0x451e1c
push 0x7f02
push ebx
call dword [sym.imp.USER32.dll_LoadCursorA]
mov esi, eax
call dword [sym.imp.USER32.dll_GetCursor]
mov dword [esp + 0x44], eax
mov eax, esi
push eax
call dword [sym.imp.USER32.dll_SetCursor]
call fcn.004b02b0
cmp eax, ebx
mov dword [esp + 0x30], eax
je 0x451e41
inc dword [eax + 4]
mov al, byte [0x727d98]
mov ecx, dword [0x728820]
mov byte [ecx + 0x728814], al
mov edx, dword [0x728820]
inc edx
cmp al, bl
mov dword [0x728820], edx
je 0x451e68
call fcn.00481060
push 0xc0
mov byte [0x727d98], bl
mov byte [0x8cbdf4], 1
call fcn.005354b8
mov esi, eax
add esp, 4
cmp esi, ebx
je 0x451f83
mov eax, dword [0x8ebff0]
mov edx, dword [0x729444]
push ebx
push ebx
push ebx
push ebx
push 0xffffffffffffffff
push ebx
push ebx
mov dword [esi + 4], ebx
push ebx
mov dword [esi], 0x6ff14c
mov dword [esi + 0x1c], ebx
push ebx
mov dword [esi + 0x64], ebx
inc edx
mov dword [esi + 0xbc], ebx
push eax
mov ebx, 1
mov eax, str.lost_rel_room.nif
mov ecx, esi
mov dword [0x729444], edx
call fcn.004be370
mov eax, dword [esi + 4]
inc eax
mov dword [esp + 0x28], esi
mov dword [esi + 4], eax
xor ebx, ebx
push 0xc0
call fcn.005354b8
mov esi, eax
add esp, 4
cmp esi, ebx
je 0x451f8c
mov eax, dword [0x8ebff0]
mov edx, dword [0x729444]
push ebx
push ebx
push ebx
push ebx
push 0xffffffffffffffff
push ebx
push ebx
mov dword [esi + 4], ebx
push ebx
mov dword [esi], 0x6ff14c
mov dword [esi + 0x1c], ebx
push ebx
mov dword [esi + 0x64], ebx
inc edx
mov dword [esi + 0xbc], ebx
push eax
mov ebx, 1
mov eax, str.lost_rel_door.kfm
mov ecx, esi
mov dword [0x729444], edx
call fcn.004be370
mov eax, dword [esi + 4]
inc eax
mov dword [esp + 0x24], esi
mov dword [esi + 4], eax
xor ebx, ebx
mov al, byte [esp + 0x17]
xor ebp, ebp
cmp al, bl
mov dword [esp + 0x1c], ebx
mov dword [esp + 0x20], ebx
push 0xc0
je 0x451f92
call fcn.005354b8
mov esi, eax
add esp, 4
cmp esi, ebx
je 0x451fee
mov eax, dword [0x8ebffc]
push ebx
push ebx
push ebx
push ebx
push 0xffffffffffffffff
push ebx
push ebx
push ebx
push ebx
push eax
mov eax, str.lost_rel_cam_men.kfm
jmp 0x451fb5
mov dword [esp + 0x28], ebx
jmp 0x451edc
mov dword [esp + 0x24], ebx
jmp 0x451f43
call fcn.005354b8
mov esi, eax
add esp, 4
cmp esi, ebx
je 0x451fee
mov eax, dword [0x8ebffc]
push ebx
push ebx
push ebx
push ebx
push 0xffffffffffffffff
push ebx
push ebx
push ebx
push ebx
push eax
mov eax, str.lost_rel_cam_sis.kfm
mov edx, dword [0x729444]
mov dword [esi], 0x6ff14c
mov dword [esi + 4], ebx
mov dword [esi + 0x1c], ebx
mov dword [esi + 0x64], ebx
mov dword [esi + 0xbc], ebx
inc edx
mov ecx, esi
mov ebx, 1
mov dword [0x729444], edx
call fcn.004be370
mov eax, dword [esi + 4]
inc eax
mov ebp, esi
mov dword [esi + 4], eax
xor ebx, ebx
cmp edi, 4
jge 0x4520a5
mov edx, dword [edi*8 + 0x7275a0]
push ebx
push ebx
push ebx
push ebx
push 1
push 0xffffffffffffffff
push ebx
push ebx
push ebx
push ebx
push edx
push ecx
mov ecx, dword [0x8ebffc]
mov eax, esp
mov dword [eax], ecx
mov eax, ecx
cmp eax, ebx
je 0x45201f
inc dword [eax + 4]
call fcn.004afb00
add esp, 0x30
cmp eax, ebx
je 0x452036
mov ecx, dword [eax + 4]
inc ecx
mov dword [esp + 0x1c], eax
mov dword [eax + 4], ecx
push 0xc0
call fcn.005354b8
mov esi, eax
add esp, 4
cmp esi, ebx
je 0x452183
mov ecx, dword [0x8ebffc]
mov eax, dword [edi*8 + 0x7275a4]
mov edx, dword [0x729444]
push ebx
push ebx
push ebx
push ebx
push 0xffffffffffffffff
push ebx
push ebx
mov dword [esi + 4], ebx
push ebx
mov dword [esi], 0x6ff14c
mov dword [esi + 0x1c], ebx
push ebx
mov dword [esi + 0x64], ebx
inc edx
mov dword [esi + 0xbc], ebx
push ecx
mov ebx, 1
mov ecx, esi
mov dword [0x729444], edx
call fcn.004be370
mov eax, dword [esi + 4]
inc eax
mov dword [esp + 0x20], esi
mov dword [esi + 4], eax
xor ebx, ebx
jmp 0x452183
mov esi, dword [esp + 0x108]
mov eax, esi
imul eax, eax, 0x94
mov ecx, dword [eax + 0x85df74]
lea eax, [eax + 0x85df74]
mov edx, esi
and edx, 1
lea edi, [edx + 1]
and ecx, 3
mov dword [esp + 0x34], str.plain
mov dword [esp + 0x38], str.attractive
mov dword [esp + 0x3c], str.beautiful
mov edx, dword [esp + ecx*4 + 0x34]
push edi
push edx
push str.pc_lost_daughter__s__d.kfm
lea edx, [esp + 0x24]
mov dword [esp + 0x24], 0x8cccd0
mov dword [esp + 0x38], eax
call fcn.004f3ce0
mov eax, dword [esp + 0x24]
add esp, 0xc
push ebx
push ebx
push ebx
push ebx
push 1
push 0xffffffffffffffff
push ebx
push ebx
push ebx
push ebx
push eax
push ecx
mov ecx, dword [0x8ebffc]
mov eax, esp
mov dword [eax], ecx
mov eax, ecx
cmp eax, ebx
je 0x45212b
inc dword [eax + 4]
call fcn.004afb00
add esp, 0x30
cmp eax, ebx
je 0x452142
mov ecx, dword [eax + 4]
inc ecx
mov dword [esp + 0x1c], eax
mov dword [eax + 4], ecx
mov edx, dword [esp + 0x2c]
mov edx, dword [edx]
push 3
and edx, 3
mov ecx, edi
mov eax, esi
call fcn.00482c00
add esp, 4
cmp eax, ebx
je 0x452168
mov ecx, dword [eax + 4]
inc ecx
mov dword [esp + 0x20], eax
mov dword [eax + 4], ecx
mov eax, dword [esp + 0x18]
add eax, 0xfffffff8
cmp eax, ebx
je 0x452183
cmp eax, 0x8cccc8
je 0x452183
push eax
call sub.MSVCR71.dll_void___cdecl_operator_delete___void__
add esp, 4
mov edx, dword [esp + 0x28]
mov ecx, dword [edx + 0xbc]
cmp ecx, ebx
je 0x452198
push 1
call fcn.004c0f40
mov ecx, dword [edx + 0x20]
mov esi, 0x8000
or ecx, esi
mov dword [edx + 0x20], ecx
mov edx, dword [esp + 0x24]
mov ecx, dword [edx + 0xbc]
cmp ecx, ebx
je 0x4521ba
push 1
call fcn.004c0f40
or dword [edx + 0x20], esi
mov edx, dword [esp + 0x1c]
mov ecx, dword [edx + 0xbc]
cmp ecx, ebx
je 0x4521d2
push 1
call fcn.004c0f40
or dword [edx + 0x20], esi
mov edx, dword [esp + 0x20]
mov ecx, dword [edx + 0xbc]
cmp ecx, ebx
je 0x4521ea
push 1
call fcn.004c0f40
or dword [edx + 0x20], esi
cmp byte [0x86bb48], bl
mov dword [esp + 0x18], ebx
je 0x452215
fld qword [0x8ca4b0]
fmul dword [0x7157e4]
call fcn.005f275c
mov ecx, 0xfa0
sub ecx, eax
mov dword [esp + 0x18], ecx
mov ecx, dword [0x7283bc]
mov eax, dword [0x728a84]
mov dword [eax*4 + 0x7288f4], ecx
mov ecx, dword [0x728a84]
inc ecx
cmp ebp, ebx
mov dword [0x728a84], ecx
mov dword [0x7283bc], 0xff7fff1
jne 0x452249
call fcn.004ae970
jmp 0x452258
push str.Camera_All
mov eax, ebp
call fcn.004aea30
add esp, 4
mov eax, dword [0x8ebfd8]
push 0x47c35000
push 0x3dcccccd
call fcn.00412840
mov esi, dword [esp + 0x28]
mov eax, esi
call fcn.004bb170
mov ebx, dword [0x8ebffc]
call fcn.004bf5b0
mov ebx, dword [0x8ec000]
call fcn.004bf5b0
mov ebx, dword [0x8ebff0]
call fcn.004bf5b0
mov edi, dword [esp + 0x20]
mov eax, edi
call fcn.004bb170
push 1
push 0
mov eax, esi
call fcn.004bb170
mov ecx, eax
call fcn.00535550
push str.shadow_01
lea ebx, [esp + 0x38]
call fcn.004c16d0
mov eax, dword [esp + 0x34]
mov ecx, dword [esp + 0x38]
mov edx, dword [esp + 0x3c]
add esi, 0x78
mov dword [esi], eax
mov dword [esi + 4], ecx
mov dword [esi + 8], edx
mov esi, dword [esp + 0x24]
add esi, 0x78
mov dword [esi], eax
mov dword [esi + 4], ecx
mov dword [esi + 8], edx
mov esi, dword [esp + 0x1c]
add edi, 0x78
mov dword [edi], eax
mov dword [edi + 4], ecx
mov dword [edi + 8], edx
add esi, 0x78
mov dword [esi], eax
mov dword [esi + 4], ecx
mov dword [esi + 8], edx
call fcn.004a2120
mov ebx, dword [esp + 0x18]
mov edi, 1
xor esi, esi
cmp edi, 0xffffffff
mov dword [esp + 0x2c], esi
jne 0x452321
fld dword [ebp + 0x2c]
jmp 0x452340
mov eax, edi
mov ecx, ebp
call fcn.004bc7a0
test eax, eax
je 0x452333
fld dword [eax + 0xc]
jmp 0x452340
fld dword [esp + 0x2c]
jmp 0x452340
fmul dword [0x715698]
call fcn.005f275c
fld qword [0x8ca4b0]
fmul dword [0x715698]
mov dword [esp + 0x18], eax
call fcn.005f275c
mov dword [esp + 0x40], eax
mov eax, dword [esp + 0x18]
test eax, eax
jle 0x45251d
push 0
call fcn.0042e1a0
add esp, 4
cmp eax, 0x1b
je 0x4524fb
cmp eax, 0x20
je 0x4524fb
cmp eax, 0xd
je 0x4524fb
mov eax, dword [0x86e35c]
test eax, eax
jne 0x4524fb
mov al, byte [0x8ccc27]
test al, al
jne 0x4524fb
push 0
push 0
push 0
lea eax, [esp + 0x58]
call fcn.004dc670
mov ecx, dword [esp + 0x34]
add esp, 0xc
push esi
push 0
push 0x64
mov edx, eax
push edx
push 0
push 0
push 0
call fcn.004bc350
push 0
push 0
push 0
lea eax, [esp + 0xc4]
call fcn.004dc670
mov ecx, dword [esp + 0x28]
add esp, 0xc
push esi
push edi
push 0x64
push eax
push 0
push 0
push 0
call fcn.004bc350
push 0
push 0
push 0
lea eax, [esp + 0x7c]
call fcn.004dc670
add esp, 0xc
push esi
push edi
push 0x64
mov ecx, eax
push ecx
mov ecx, dword [esp + 0x34]
push 0
push 0
push 0
call fcn.004bc350
push 0
push 0
push 0
lea eax, [esp + 0xa0]
call fcn.004dc670
mov ecx, dword [esp + 0x2c]
add esp, 0xc
push esi
push edi
push 0x64
mov edx, eax
push edx
push 0
push 0
push 0
call fcn.004bc350
push 0
push 0
push 0
lea eax, [esp + 0xe8]
call fcn.004dc670
add esp, 0xc
push 0
push 0xffffffffffffffff
push 0x64
push eax
push 0
push 0
push 0
mov ecx, ebp
call fcn.004bc350
push esi
push edi
mov ecx, ebp
call fcn.004bc4e0
mov eax, ebp
call fcn.004bc620
mov esi, dword [esp + 0x30]
mov byte [ebp + 0x24], 0
call fcn.004b0360
test ebx, ebx
je 0x4524c0
fld qword [0x8ca4b0]
fmul dword [0x715698]
call fcn.005f275c
cmp ebx, eax
jg 0x4524c0
push 0x86bb48
call fcn.004b03f0
add esp, 4
push 0
push 0
push 0
call fcn.004d1a40
add esp, 0xc
push 5
call dword [sym.imp.KERNEL32.dll_Sleep]
fld qword [0x8ca4b0]
fmul dword [0x7157e4]
call fcn.005f275c
mov esi, dword [esp + 0x40]
neg esi
sub esi, eax
cmp esi, dword [esp + 0x18]
jl 0x452370
jmp 0x45251d
mov al, byte [0x8ca27f]
test al, al
je 0x452518
push 0x8ca288
call fcn.00489090
add esp, 4
mov byte [0x8ca27f], 0
mov edi, 7
inc edi
cmp edi, 6
jle 0x452311
mov al, byte [esp + 0x10c]
test al, al
je 0x45269d
test byte [0x86bb1c], 1
mov esi, 0x8ebf58
je 0x45254b
push str.I_have_an_amazing_story_to_tell_you._he_says.
jmp 0x452550
push str.I_have_an_amazing_story_to_tell_you._she_says.
call fcn.004f7680
add esp, 4
xor edi, edi
mov ecx, 1
mov eax, 0x85c9a4
mov ebx, 0x28
lea esp, [esp]
cmp dword [eax - 0x14], ebx
jne 0x45257a
cmp dword [eax], 0x2a
je 0x452587
add eax, 0x20
inc ecx
cmp eax, 0x85d184
jl 0x452570
jmp 0x45258b
test ecx, ecx
jg 0x4525ad
test dword [0x85c164], 0x80000
jne 0x4525ad
push 1
call fcn.0044c400
add esp, 4
mov ecx, 0x24
call fcn.00487df0
jmp 0x4525f7
mov ax, word [0x86bb1e]
cmp ax, 4
mov esi, 0x8ebf58
jge 0x4525ea
movsx ecx, ax
push ecx
push str.While_held_captive_I_managed_to_obtain_this_piece_of_a_map_to_the_legendary_lost_city_of_the__LOSTCITY_
call fcn.004f7680
push str.I_will_trust_this_map_to_you_for_safekeeping._n
call fcn.004f7680
add esp, 0xc
mov ecx, 0x24
call fcn.00487df0
mov edi, 1
jmp 0x4525f7
push str.Well__maybe_some_other_time._n
call fcn.004f7680
add esp, 4
mov ecx, 1
mov eax, 0x85c9a4
cmp dword [eax - 0x14], ebx
jne 0x45260a
cmp dword [eax], ebx
je 0x452617
add eax, 0x20
inc ecx
cmp eax, 0x85d184
jl 0x452601
jmp 0x452626
test ecx, ecx
jle 0x452626
push 0x63
push ecx
call fcn.0044d240
add esp, 8
mov eax, dword [0x85c268]
push 0
push 0
push 0xffffffffffffffff
cdq
push 0
push 0
push 0xffffffffffffffff
and edx, 7
add eax, edx
sar eax, 3
push 0
push str.SNAP
push eax
mov eax, dword [0x85c26c]
cdq
and edx, 0xf
add eax, edx
sar eax, 4
push eax
call fcn.00430160
mov si, word [0x86bb1c]
push 0
movsx edx, si
push 0
push edx
push 0x2d
call fcn.0043a8d0
add esp, 0x38
inc si
test edi, edi
mov word [0x86bb1c], si
je 0x45269d
mov eax, dword [0x85c3f8]
mov ecx, dword [0x85c3b8]
push 0
push 1
push eax
push ecx
push 2
call fcn.004933a0
add esp, 0x14
mov ebx, dword [0x8ec000]
mov edi, dword [esp + 0x28]
call fcn.004bf620
mov ebx, dword [0x8ebffc]
call fcn.004bf620
mov ebx, dword [0x8ebff0]
call fcn.004bf620
mov eax, dword [0x728820]
dec eax
mov dword [0x728820], eax
mov bl, byte [eax + 0x728814]
cmp bl, byte [0x727d98]
je 0x452743
test bl, bl
mov edx, dword [0x8cb7c4]
mov ecx, dword [0x8cb7c0]
je 0x452718
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 0x452743
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
call fcn.004ae970
mov eax, dword [0x728a84]
dec eax
test ebp, ebp
mov dword [0x728a84], eax
mov edx, dword [eax*4 + 0x7288f4]
mov dword [0x7283bc], edx
je 0x45277f
dec dword [ebp + 4]
jne 0x45277f
mov eax, dword [ebp]
push 1
mov ecx, ebp
call dword [eax]
mov ecx, dword [esp + 0x20]
dec dword [ecx + 4]
jne 0x45278e
mov edx, dword [ecx]
push 1
call dword [edx]
mov ecx, dword [esp + 0x1c]
dec dword [ecx + 4]
jne 0x45279d
mov eax, dword [ecx]
push 1
call dword [eax]
mov ecx, dword [esp + 0x24]
dec dword [ecx + 4]
jne 0x4527ac
mov edx, dword [ecx]
push 1
call dword [edx]
dec dword [edi + 4]
jne 0x4527b9
mov eax, dword [edi]
push 1
mov ecx, edi
call dword [eax]
mov ecx, dword [esp + 0x30]
test ecx, ecx
je 0x4527cc
dec dword [ecx + 4]
jne 0x4527cc
mov edx, dword [ecx]
push 1
call dword [edx]
mov eax, dword [esp + 0x44]
push eax
call dword [sym.imp.USER32.dll_SetCursor]
pop edi
pop esi
pop ebp
pop ebx
add esp, 0xf0
ret