Function at 0x4412c0
Capabilities:
Parse credit card information
Resolve function by parsing pe exports

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
push 0xffffffffffffffff
push 0x4d4cfc
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0x1f4
push ebx
mov ebx, ecx
mov eax, dword [ebx + 0x1c]
mov eax, dword [eax + 4]
mov eax, dword [eax]
push ebp
xor ebp, ebp
cmp eax, ebp
push esi
push edi
mov dword [esp + 0x1c], ebx
je 0x44130f
lea esp, [esp]
mov ecx, dword [eax + 8]
mov dword [ecx + 0x188], ebp
mov eax, dword [eax]
cmp eax, ebp
jne 0x441300
mov ecx, dword [ebx + 0x20]
mov eax, dword [ecx + 4]
mov edi, dword [eax]
cmp edi, ebp
mov dword [esp + 0x60], edi
je 0x4413f4
mov esi, dword [edi + 8]
lea edx, [esi + 0x24]
push 0x504d90
push edx
call fcn.004c4d20
add esp, 8
test eax, eax
jne 0x441365
mov eax, dword [esi + 8]
cmp eax, 0x34
je 0x441365
cmp eax, 0x31
je 0x441365
cmp eax, 0x33
je 0x441365
cmp eax, 0x30
je 0x441365
cmp eax, 0x4c
je 0x441365
cmp eax, 0x4d
je 0x441365
cmp eax, 0x4e
jne 0x4413e6
push ebp
push 3
mov ecx, esi
call fcn.00419230
mov edx, dword [eax + 0x1c]
mov edx, dword [edx + 4]
lea ecx, [eax + 0x24]
mov ebp, ecx
mov esi, dword [ebp]
mov edi, dword [ebp + 4]
mov ebp, dword [ebp + 8]
mov dword [esp + 0x7c], ebp
fld dword [esp + 0x7c]
fsub dword [0x4d797c]
add edx, 4
mov dword [edx], esi
mov dword [edx + 4], edi
mov edi, dword [esp + 0x60]
fstp dword [esp + 0x7c]
mov esi, dword [esp + 0x7c]
mov dword [edx + 8], esi
mov eax, dword [eax + 0x20]
xor ebp, ebp
cmp eax, ebp
je 0x4413e6
fld dword [ecx + 8]
lea edx, [eax + 0x10]
fsub dword [edx + 8]
fld dword [ecx + 4]
fsub dword [edx + 4]
fld dword [ecx]
fsub dword [edx]
fadd dword [eax + 4]
fstp dword [eax + 4]
fadd dword [eax + 8]
fstp dword [eax + 8]
fadd dword [eax + 0xc]
fstp dword [eax + 0xc]
mov eax, dword [ecx]
mov dword [edx], eax
mov eax, dword [ecx + 4]
mov dword [edx + 4], eax
mov ecx, dword [ecx + 8]
mov dword [edx + 8], ecx
mov edi, dword [edi]
cmp edi, ebp
mov dword [esp + 0x60], edi
jne 0x441323
mov ecx, dword [ebx + 0xc]
cmp dword [ecx + 0xff8], ebp
je 0x441447
cmp dword [ebx + 0xec], ebp
jne 0x441447
fld qword [ebx + 0xd0]
fcomp qword [0x4d7378]
fnstsw ax
test ah, 0x41
jne 0x441447
mov edx, dword [ecx]
fld qword [ebx + 0xd0]
fsub qword [edx + 0x278]
fst qword [ebx + 0xd0]
fcomp qword [0x4d7378]
fnstsw ax
test ah, 5
jp 0x441447
mov dword [ebx + 0xd0], ebp
mov dword [ebx + 0xd4], ebp
cmp dword [ebx + 0x28], ebp
je 0x444623
mov eax, dword [ebx + 0x1c]
mov eax, dword [eax + 4]
mov eax, dword [eax]
cmp eax, ebp
je 0x443533
mov ecx, dword [eax]
mov esi, dword [eax + 8]
push 0
mov dword [esp + 0x134], ecx
push 0xfe
mov ecx, esi
mov dword [ebx + 0x100], 0
call fcn.00419230
mov dword [esp + 0x10], eax
mov eax, dword [esi + 8]
cmp eax, 0x44
je 0x441499
cmp eax, 0x46
jne 0x441558
mov ecx, dword [esi + 0x170]
test ecx, ecx
je 0x441558
mov ecx, dword [esi + 0x108]
test ecx, ecx
jne 0x441558
cmp eax, 0x46
mov ecx, esi
jne 0x4414c3
push str.Test
jmp 0x4414c8
push str.Catch
call fcn.004188d0
test eax, eax
mov dword [esp + 0x18], eax
je 0x441558
mov edx, dword [ebx + 0x1c]
mov eax, dword [edx + 4]
mov ebp, dword [eax]
test ebp, ebp
je 0x441558
mov edi, dword [ebp + 8]
cmp edi, esi
je 0x441551
lea eax, [edi + 0x24]
push 0x504dac
push eax
call fcn.004c4d20
add esp, 8
test eax, eax
je 0x441551
mov eax, dword [esp + 0x18]
fld dword [edi + 0x90]
fsub dword [eax + 0x2c]
fld dword [edi + 0x8c]
fsub dword [eax + 0x28]
fld dword [edi + 0x88]
fsub dword [eax + 0x24]
fld st(0)
fmul st(1)
fld st(2)
fmul st(3)
faddp st(1)
fld st(3)
fmul st(4)
faddp st(1)
fsqrt
fstp st(3)
fstp st(0)
fstp st(0)
fcomp dword [0x4d7380]
fnstsw ax
test ah, 5
jp 0x441551
push 0
push 0
push esi
mov ecx, ebx
call fcn.0043ee90
mov ebp, dword [ebp]
test ebp, ebp
jne 0x4414e5
cmp dword [esi + 8], 0x25
jne 0x44157e
mov ecx, dword [esp + 0x10]
fld dword [ecx + 0x40]
fcomp dword [0x4d72a4]
fnstsw ax
test ah, 0x41
jne 0x44157e
push 0
push 0
push esi
mov ecx, ebx
call fcn.0043ee90
cmp dword [esi + 8], 0x2c
jne 0x441788
push 3
mov ecx, esi
call fcn.00418090
mov edx, dword [esp + 0x10]
fld dword [edx + 0x40]
mov edi, eax
fcomp dword [0x4d72a4]
fnstsw ax
test ah, 0x41
jne 0x4416b8
fld dword [esi + 0xf4]
call fcn.004c4770
mov eax, dword [eax*4 + 0x504780]
mov ecx, dword [ebx + 0xc]
mov ecx, dword [ecx + 0x103c]
push eax
call fcn.00420330
fld dword [esi + 0xf4]
call fcn.004c4770
mov edx, dword [ebx + 0xc]
mov dword [ebx + 0xe0], eax
mov eax, dword [edx]
mov ecx, dword [eax + 0x288]
mov edx, dword [ecx + 8]
mov eax, dword [edx + 0xc]
mov ecx, dword [eax + 0xc]
push str.power_gravity_tube_on
call fcn.00460e50
push 2
mov ecx, esi
mov ebp, eax
call fcn.00418090
push 0
push 0
push esi
mov ecx, ebx
mov dword [eax + 0xa8], ebp
call fcn.0043ee90
test edi, edi
je 0x441788
fld qword [esi + 0x138]
fcomp qword [0x4d7378]
fnstsw ax
test ah, 0x44
jp 0x44173a
mov ecx, dword [esi + 0x12c]
fld qword [ecx]
mov cl, byte [0x50f4e0]
mov eax, 1
test al, cl
fstp qword [esi + 0x138]
mov dword [edi + 0x118], eax
mov dword [edi + 0xc4], 0xbf800000
mov dword [edi + 0xc0], 0xbe4ccccd
jne 0x4416a4
or dword [0x50f4e0], eax
mov edx, dword [ebx + 0xc]
mov eax, dword [edx]
mov ecx, dword [eax + 0xfc]
push str.SOUND_FX_GRAVITATION
mov dword [esp + 0x210], 0
call fcn.00450d50
mov dword [0x50f4dc], eax
mov dword [esp + 0x20c], 0xffffffff
mov ecx, dword [0x50f4dc]
push 0
push 0xfffffffffffffffe
call fcn.00465df0
jmp 0x44173a
mov ecx, dword [ebx + 0xdc]
mov edx, dword [ecx*4 + 0x504780]
mov eax, dword [ebx + 0xc]
mov ecx, dword [eax + 0x103c]
push edx
call fcn.00420330
mov ecx, dword [ebx + 0xdc]
mov edx, dword [ebx + 0xc]
mov dword [ebx + 0xe0], ecx
mov eax, dword [edx]
mov ecx, dword [eax + 0x288]
mov edx, dword [ecx + 8]
mov eax, dword [edx + 0xc]
mov ecx, dword [eax + 0xc]
push str.power_gravity_tube_off
call fcn.00460e50
push 2
mov ecx, esi
mov ebp, eax
call fcn.00418090
test edi, edi
mov dword [eax + 0xa8], ebp
je 0x441788
fld qword [esi + 0x138]
fcomp qword [0x4d7378]
fnstsw ax
test ah, 0x41
jne 0x44173a
xor eax, eax
mov dword [esi + 0x138], eax
mov dword [esi + 0x13c], eax
mov dword [edi + 0x118], eax
fld qword [esi + 0x138]
fcomp qword [0x4d7378]
fnstsw ax
test ah, 0x41
jne 0x441788
mov ecx, dword [esi + 0x12c]
fld qword [ecx]
fsub qword [esi + 0x138]
fcom qword [0x4d7358]
fnstsw ax
test ah, 0x41
jne 0x441776
fstp st(0)
mov dword [edi + 0x118], 0
jmp 0x441788
fmul qword [0x4d7ac0]
fst dword [edi + 0x148]
fstp dword [edi + 0x14c]
lea eax, [esi + 0x24]
push 0x504e00
push eax
call fcn.00403640
add esp, 8
test eax, eax
je 0x441821
test byte [0x50f4e0], 2
mov edi, dword [esi + 0x80]
jne 0x4417e8
or dword [0x50f4e0], 2
mov edx, dword [ebx + 0xc]
mov eax, dword [edx]
mov ecx, dword [eax + 0xfc]
push str.SOUND_FX_FUZE
mov dword [esp + 0x210], 1
call fcn.00450d50
or ebp, 0xffffffff
mov dword [0x50f4d8], eax
mov dword [esp + 0x20c], ebp
jmp 0x4417f0
mov eax, dword [0x50f4d8]
or ebp, 0xffffffff
mov ecx, dword [edi + 4]
mov edx, dword [ecx + 8]
test edx, edx
je 0x44180f
cmp dword [esi + 0x14], ebp
jne 0x441821
push 0
push 0xfffffffffffffffe
mov ecx, eax
call fcn.00465df0
mov dword [esi + 0x14], eax
jmp 0x441821
mov ecx, dword [esi + 0x14]
cmp ecx, ebp
je 0x441821
push ecx
mov ecx, eax
call fcn.00465b60
mov dword [esi + 0x14], ebp
mov eax, dword [esi + 8]
cmp eax, 0x2e
jne 0x441899
fld dword [esi + 0xf4]
fcomp dword [0x4f911c]
fnstsw ax
test ah, 0x44
jnp 0x441b80
push 0
push 3
mov ecx, esi
call fcn.00419230
add eax, 0x30
mov edx, dword [eax]
mov ecx, dword [eax + 4]
mov dword [esp + 0x74], edx
mov edx, dword [eax + 8]
lea eax, [esp + 0x194]
mov dword [esp + 0x78], ecx
push eax
lea ecx, [esp + 0x78]
mov dword [esp + 0x80], edx
call fcn.00412830
fld dword [esp + 0x78]
fcomp dword [0x4d7bc8]
fnstsw ax
test ah, 5
jp 0x441b80
mov ecx, dword [ebx + 0xc]
push esi
call fcn.0042ef70
jmp 0x441b80
cmp eax, 0x3b
jne 0x4419d5
cmp dword [esi + 0xf4], 0x3f800000
jne 0x441b80
push 0
push 4
mov ecx, esi
call fcn.00419230
mov edi, eax
fld dword [edi + 0x40]
mov eax, dword [edi + 0x20]
fmul dword [0x4d7288]
mov ecx, dword [eax]
fadd dword [ecx + 0x30]
fst dword [ecx + 0x34]
fld st(0)
fmulp st(1)
fst dword [ecx + 0x3c]
fsub dword [ecx + 0x38]
fdivr qword [0x4d7388]
fstp dword [ecx + 0x40]
mov edx, dword [esi + 0x130]
fld qword [edx]
fmul qword [0x4d7bc0]
fsubr dword [edi + 0x40]
fst dword [edi + 0x40]
fcomp dword [0x4f911c]
fnstsw ax
test ah, 0x41
jp 0x441931
fld dword [ecx + 0x30]
fst dword [ecx + 0x34]
fld st(0)
fmulp st(1)
fst dword [ecx + 0x3c]
fsub dword [ecx + 0x38]
fdivr qword [0x4d7388]
fstp dword [ecx + 0x40]
mov dword [edi + 0x40], 0
mov dword [esi + 0xf4], 0x40000000
push 0
mov ecx, esi
call fcn.00418090
fld dword [edi + 0x40]
fmul dword [0x4d796c]
mov ebp, eax
fsubr dword [0x4d7284]
fst dword [esp + 0x10]
fcomp dword [0x4d7284]
fnstsw ax
test ah, 5
jp 0x441995
fld dword [esp + 0x10]
call fcn.004c4770
fld dword [esp + 0x10]
fadd dword [0x4d7284]
mov dword [ebp + 0x154], eax
call fcn.004c4770
fld dword [esp + 0x10]
fld qword [0x4d7388]
mov dword [ebp + 0x158], eax
call fcn.004c43fa
fstp dword [ebp + 0x150]
push 0
mov ecx, esi
call fcn.00417e50
fld dword [eax + 0xf4]
fmul dword [edi + 0x40]
fmul dword [0x4d796c]
fstp dword [eax + 0xd8]
mov eax, dword [eax + 0x84]
test eax, eax
je 0x441b80
push eax
mov eax, dword [ebx + 0xc]
mov ecx, dword [eax + 0x103c]
call fcn.00420df0
jmp 0x441b80
cmp eax, 3
jne 0x441b28
cmp dword [esi + 0xf4], 0x3f800000
jne 0x441b80
push 0
mov ecx, esi
call fcn.00417e50
mov ecx, dword [esi + 0x84]
mov ebp, eax
mov edi, dword [ebp + 0x84]
push 0
mov dword [esp + 0x14], ecx
push 0
mov ecx, edi
call fcn.0041fa80
push 0x504e1c
mov ecx, ebp
call fcn.004188d0
push 0
mov ecx, ebp
mov dword [esp + 0x1c], eax
call fcn.00418090
fld dword [eax + 0xe0]
fcomp dword [0x4f911c]
mov edx, dword [esp + 0x18]
mov ecx, dword [ebx + 0xc]
mov ecx, dword [ecx + 0x103c]
add edx, 0x24
fnstsw ax
test ah, 0x41
mov eax, dword [esp + 0x10]
jne 0x441a5d
push 0
push 0xbf490fdb
jmp 0x441a64
push 0x3f490fdb
push 0
push 1
push 0x3dcccccd
push edx
push eax
push edi
call fcn.00420360
push str.Ammo
mov ecx, ebp
call fcn.004188d0
add eax, 0x24
push eax
lea edx, [esp + 0x15c]
push edx
mov ecx, edi
mov dword [esp + 0x160], 0
mov dword [esp + 0x164], 0x42c80000
mov dword [esp + 0x168], 0
call fcn.0041edd0
mov eax, dword [esi + 0x12c]
fld qword [eax]
push 0
push 0
fstp qword [esi + 0x138]
push esi
mov ecx, ebx
mov dword [esi + 0xf4], 0x40000000
call fcn.0043ee90
test byte [0x50f4e0], 4
jne 0x441b17
or dword [0x50f4e0], 4
mov ecx, dword [ebx + 0xc]
mov edx, dword [ecx]
mov ecx, dword [edx + 0xfc]
push str.SOUND_FX_CATAPULT
mov dword [esp + 0x210], 2
call fcn.00450d50
mov dword [0x50f4d4], eax
mov dword [esp + 0x20c], 0xffffffff
mov ecx, dword [0x50f4d4]
push 0
push 0xfffffffffffffffe
call fcn.00465df0
jmp 0x441b80
cmp eax, 0x2d
jne 0x441b80
push 0
mov ecx, esi
call fcn.00417e50
mov edi, dword [eax + 0x84]
push str.Push
mov ecx, eax
call fcn.004188d0
test edi, edi
mov dword [esp + 0x164], 0
mov dword [esp + 0x168], 0x3c23d70a
mov dword [esp + 0x16c], 0
je 0x441b80
add eax, 0x24
push eax
lea eax, [esp + 0x168]
push eax
mov ecx, edi
call fcn.0041edd0
cmp dword [esi + 8], 0x13
jne 0x441cbb
xor ebp, ebp
push ebp
push 1
mov ecx, esi
call fcn.00419230
push ebp
push 3
mov ecx, esi
mov edi, eax
call fcn.00419230
mov ecx, eax
mov edx, dword [ecx + 0x40]
mov dword [edi + 0x40], edx
mov eax, dword [esi + 0x130]
fld qword [eax]
fmul qword [0x4d7aa0]
fsubr dword [ecx + 0x40]
fst dword [ecx + 0x40]
fcomp dword [0x4f911c]
fnstsw ax
test ah, 5
jp 0x441bce
mov dword [ecx + 0x40], ebp
fld dword [ecx + 0x40]
fcomp dword [0x4f911c]
fnstsw ax
test ah, 0x41
jne 0x441bf2
mov edx, dword [esi + 0x130]
fld qword [edx]
fmul qword [0x4d7bb8]
fsubr dword [ecx + 0x40]
fstp dword [ecx + 0x40]
fld dword [ecx + 0x40]
fcomp dword [0x4f911c]
fnstsw ax
test ah, 5
jp 0x441c16
mov eax, dword [esi + 0x130]
fld qword [eax]
fmul qword [0x4d7bb8]
fadd dword [ecx + 0x40]
fstp dword [ecx + 0x40]
fld dword [ecx + 0x40]
fcomp dword [0x4d7284]
fnstsw ax
test ah, 0x41
jne 0x441c30
push ebp
push ebp
push esi
mov ecx, ebx
call fcn.0043ee90
mov edx, dword [edi + 0x3c]
cmp edx, ebp
je 0x441c6a
mov ecx, dword [ebx + 0x1c]
mov eax, dword [ecx + 4]
mov eax, dword [eax]
cmp eax, ebp
je 0x441c52
mov ecx, dword [eax + 8]
mov dword [ecx + 0x188], ebp
mov eax, dword [eax]
cmp eax, ebp
jne 0x441c43
push edx
push edi
mov ecx, ebx
mov dword [esi + 0x188], 2
call fcn.0043f740
jmp 0x442cd9
mov edx, dword [esi + 0x20]
mov eax, dword [edx + 4]
cmp dword [eax + 8], ebp
push ebp
jne 0x441c89
lea ecx, [edi + 0x30]
push ecx
mov ecx, dword [ebx + 0xc]
lea edx, [edi + 0x24]
push edx
push esi
call fcn.00427ae0
jmp 0x441c92
mov ecx, esi
call fcn.00418120
mov eax, dword [eax]
fld dword [edi + 0x40]
mov ecx, dword [eax + 4]
fmul dword [0x4d76a0]
fstp dword [ecx + 0x1040]
mov eax, dword [eax + 4]
fld dword [edi + 0x40]
fmul dword [0x4d7380]
fstp dword [eax + 0x1050]
jmp 0x442cd9
lea eax, [esi + 0x24]
push 0x504e4c
push eax
call fcn.004c4d20
add esp, 8
test eax, eax
je 0x442152
push 0
push 3
mov ecx, esi
call fcn.00419230
mov edi, eax
mov eax, dword [edi + 0x18]
mov ecx, dword [eax + 0x11c]
fld dword [ecx + 0xf4]
mov dword [esp + 0x18], edi
call fcn.004c4770
test eax, eax
mov dword [esp + 0x24], 0
je 0x442cd9
mov eax, dword [ebx + 0x1c]
mov eax, dword [eax + 4]
mov eax, dword [eax]
test eax, eax
mov edx, dword [edi + 0x20]
mov dword [esp + 0x10], edx
mov dword [esp + 0x13c], eax
je 0x442cd9
jmp 0x441d30
mov ecx, dword [esp + 0x13c]
mov edi, dword [ecx + 8]
mov eax, dword [edi + 8]
cmp eax, 0x13
je 0x442090
cmp eax, 0x35
je 0x442090
cmp eax, 0x31
je 0x441fe8
cmp eax, 0x33
je 0x441fe8
cmp eax, 0x30
je 0x441fe8
cmp eax, 0x4c
je 0x441fe8
cmp eax, 0x4d
je 0x441fe8
cmp eax, 0x4e
je 0x441fe8
lea ebp, [edi + 0x24]
push 0x504e5c
push ebp
call fcn.004c4d20
add esp, 8
test eax, eax
jne 0x441fe8
push 0x504e74
push ebp
call fcn.00403640
add esp, 8
test eax, eax
je 0x441df5
mov edx, dword [esi + 0x12c]
fld qword [edx]
fsub qword [esi + 0x138]
fcomp qword [0x4d76a8]
fnstsw ax
test ah, 0x41
jne 0x44211b
mov eax, dword [esp + 0x18]
add eax, 0x24
push eax
push esi
push edi
mov ecx, ebx
call fcn.004388a0
test eax, eax
je 0x44211b
mov dword [esp + 0x24], 1
jmp 0x44211b
mov eax, dword [edi + 8]
cmp eax, 0x32
jne 0x441f56
push 1
mov ecx, edi
call fcn.00417e50
mov ebp, eax
push 0
mov ecx, edi
mov dword [esp + 0x148], ebp
call fcn.00417e50
mov dword [esp + 0x50], eax
mov eax, dword [esp + 0x10]
test eax, eax
je 0x44211b
lea ecx, [esp + 0x1ac]
push ecx
lea edx, [esp + 0x138]
push edx
push 0
push 3
mov ecx, ebp
call fcn.00419230
mov ecx, dword [esp + 0x18]
add eax, 0x24
push eax
call fcn.004072d0
test eax, eax
je 0x44211b
push 0
push 3
mov ecx, edi
call fcn.00419230
mov ecx, dword [esp + 0x144]
mov ebp, eax
mov eax, dword [edi + 0x130]
fld qword [eax]
push 0
fmul dword [esp + 0x138]
fadd dword [ebp + 0x40]
fstp dword [ebp + 0x40]
call fcn.00418090
mov eax, dword [eax + 0xa8]
fld dword [ebp + 0x40]
mov eax, dword [eax]
fmul dword [0x4d7380]
mov eax, dword [eax]
fld dword [eax + 0x38]
mov dword [esp + 0x84], eax
fld st(1)
fcomp dword [0x4d7284]
fnstsw ax
test ah, 5
jp 0x441edd
mov ecx, dword [edi + 0x130]
fld qword [ecx]
fmul dword [0x4d797c]
fsubp st(1)
fcom dword [0x4d796c]
fnstsw ax
test ah, 5
jp 0x441edd
fstp st(0)
fld dword [0x4d796c]
mov edx, dword [esp + 0x50]
fld dword [edx + 0xe8]
mov ebp, dword [esp + 0x84]
fabs
fcomp qword [0x4d7388]
fnstsw ax
test ah, 5
jp 0x441f08
fld st(0)
fstp dword [ebp + 0x38]
fst dword [ebp + 0x4c]
fst dword [ebp + 0x60]
fld st(1)
fcomp dword [0x4d7284]
fnstsw ax
test ah, 1
jne 0x441f4c
fcomp dword [0x4d7bb0]
fnstsw ax
test ah, 1
jne 0x441f4e
push 0
fstp st(0)
push 0
push edi
mov ecx, ebx
mov dword [esp + 0x14c], 0x3f800000
call fcn.0043ee90
fld dword [esp + 0x140]
fstp dword [ebp + 0x74]
jmp 0x44211b
fstp st(0)
fstp dword [ebp + 0x74]
jmp 0x44211b
cmp eax, 0x47
jne 0x44211b
mov eax, dword [edi + 0x10]
test eax, eax
jne 0x44211b
mov eax, dword [esp + 0x18]
fld dword [eax + 0x2c]
lea ecx, [esp + 0x170]
fld dword [eax + 0x28]
mov eax, dword [eax + 0x24]
fadd dword [0x4d7a84]
push ecx
lea edx, [esp + 0x150]
push edx
fstp dword [esp + 0x158]
push 0
mov ecx, edi
fstp dword [esp + 0x160]
mov dword [esp + 0x158], eax
mov dword [esp + 0x17c], 0
mov dword [esp + 0x180], 0
mov dword [esp + 0x184], 0x3f800000
call fcn.00418090
mov ecx, eax
call fcn.004012c0
test eax, eax
je 0x44211b
push edi
mov ecx, ebx
call fcn.00440af0
jmp 0x44211b
fld dword [edi + 0xf4]
fcomp dword [0x4f911c]
fnstsw ax
test ah, 0x44
jp 0x44211b
lea eax, [esp + 0x1f4]
push eax
lea ecx, [esp + 0x10c]
push ecx
push 0
push 3
mov ecx, edi
call fcn.00419230
mov ecx, dword [esp + 0x18]
add eax, 0x24
push eax
call fcn.004072d0
test eax, eax
je 0x44211b
fld dword [esp + 0x108]
fcomp dword [0x4d7bac]
fnstsw ax
test ah, 0x41
jne 0x44211b
push edi
mov ecx, ebx
call fcn.00439540
lea edx, [edi + 0x24]
push 0x504e68
push edx
call fcn.004c4d20
add esp, 8
test eax, eax
je 0x44211b
fld dword [edi + 0xf8]
fcomp dword [edi + 0xf4]
fnstsw ax
test ah, 0x44
jnp 0x44211b
push 0
push 0
push edi
mov ecx, ebx
call fcn.0043ee90
jmp 0x44211b
mov eax, dword [esp + 0x10]
test eax, eax
je 0x44211b
lea eax, [esp + 0x1e8]
push eax
lea ecx, [esp + 0x118]
push ecx
push 0
push 3
mov ecx, edi
call fcn.00419230
mov ecx, dword [esp + 0x18]
add eax, 0x24
push eax
call fcn.004072d0
test eax, eax
je 0x44211b
push 0
push 3
mov ecx, edi
call fcn.00419230
fld dword [esp + 0x114]
fmul dword [0x4d741c]
mov ebp, eax
fst dword [ebp + 0x40]
fcomp dword [0x4d741c]
fnstsw ax
test ah, 0x41
jne 0x4420f9
mov dword [ebp + 0x40], 0x41200000
cmp dword [edi + 8], 0x35
mov dword [edi + 0x188], 1
jne 0x44211b
push 0x504e58
mov ecx, edi
call fcn.004188d0
mov edx, dword [ebp + 0x40]
mov dword [eax + 0x40], edx
mov eax, dword [esp + 0x13c]
mov eax, dword [eax]
test eax, eax
mov dword [esp + 0x13c], eax
jne 0x441d30
mov eax, dword [esp + 0x24]
test eax, eax
je 0x442cd9
mov ecx, dword [esi + 0x12c]
fld qword [ecx]
fstp qword [esi + 0x138]
jmp 0x442cd9
mov ecx, dword [esi + 8]
cmp ecx, 0x34
jne 0x4423f3
push 0
push 3
mov ecx, esi
call fcn.00419230
mov edx, dword [eax + 0x18]
mov dword [esp + 0x10], eax
mov eax, dword [edx + 0x11c]
fld dword [eax + 0xf4]
call fcn.004c4770
test eax, eax
je 0x442cd9
mov ecx, dword [ebx + 0x1c]
mov eax, dword [ecx + 4]
mov eax, dword [eax]
test eax, eax
mov dword [esp + 0x110], eax
je 0x442cd9
mov edx, dword [esp + 0x110]
mov edi, dword [edx + 8]
push 0
push 3
mov ecx, edi
call fcn.00419230
mov ebp, eax
cmp dword [edi + 8], 0x35
jne 0x4421ea
mov eax, dword [esp + 0x10]
push ebp
push eax
mov ecx, ebx
call fcn.00438320
test eax, eax
je 0x4422c9
push 0x504e80
mov ecx, edi
call fcn.004188d0
mov dword [eax + 0x40], 0x41200000
jmp 0x4422c9
lea ecx, [edi + 0x24]
push 0x504e84
push ecx
call fcn.004c4d20
add esp, 8
test eax, eax
je 0x44225c
fld dword [edi + 0xf4]
call fcn.004c4770
test eax, eax
jne 0x4422c9
mov edx, dword [esp + 0x10]
push ebp
push edx
mov ecx, ebx
call fcn.00438320
test eax, eax
je 0x4422c9
mov ecx, dword [ebx + 0xc]
push edi
call fcn.0042ef70
fld dword [edi + 0xf8]
fcomp dword [edi + 0xf4]
mov dword [edi + 0x10], 0
fnstsw ax
test ah, 0x44
jnp 0x4422c9
push 0
push 0
push edi
mov ecx, ebx
call fcn.0043ee90
jmp 0x4422c9
mov eax, dword [edi + 8]
cmp eax, 0x31
je 0x44227d
cmp eax, 0x33
je 0x44227d
cmp eax, 0x30
je 0x44227d
cmp eax, 0x4c
je 0x44227d
cmp eax, 0x4d
je 0x44227d
cmp eax, 0x4e
jne 0x4422c9
fld dword [edi + 0xf4]
call fcn.004c4770
test eax, eax
jne 0x4422c9
mov eax, dword [esp + 0x10]
push ebp
push eax
mov ecx, ebx
call fcn.00438320
test eax, eax
je 0x4422c9
mov ebp, dword [ebp + 0x1c]
mov ebp, dword [ebp + 4]
mov eax, 1
mov dword [ebp + 0x1034], eax
mov ecx, dword [edi + 0x12c]
mov dword [edi + 0xf4], 0x3f800000
mov dword [edi + 0x10], eax
fld qword [ecx]
fstp qword [edi + 0x138]
lea edx, [edi + 0x24]
push 0x504e90
push edx
call fcn.00403640
add esp, 8
test eax, eax
je 0x442339
mov eax, dword [esp + 0x10]
fld dword [eax + 0x30]
lea ecx, [eax + 0x24]
mov edx, dword [ecx]
fmul dword [0x4d7a84]
mov dword [esp + 0x118], edx
mov edx, dword [ecx + 4]
mov ecx, dword [ecx + 8]
fadd dword [esp + 0x118]
mov dword [esp + 0x11c], edx
lea edx, [esp + 0x118]
push edx
fstp dword [esp + 0x11c]
push esi
mov dword [esp + 0x128], ecx
push edi
mov ecx, ebx
call fcn.004388a0
mov dword [ebx + 0x100], 1
jmp 0x4423d6
cmp dword [edi + 8], 0x47
jne 0x4423d6
mov eax, dword [edi + 0x10]
test eax, eax
jne 0x4423d6
mov eax, dword [esp + 0x10]
fld dword [eax + 0x30]
lea ecx, [eax + 0x24]
mov edx, dword [ecx]
fmul dword [0x4d7280]
mov dword [esp + 0xa4], edx
mov edx, dword [ecx + 4]
mov ecx, dword [ecx + 8]
fadd dword [esp + 0xa4]
mov dword [esp + 0xa8], edx
lea edx, [esp + 0xf0]
push edx
fstp dword [esp + 0xa8]
lea eax, [esp + 0xa8]
push eax
mov dword [esp + 0xb4], ecx
push 0
mov ecx, edi
mov dword [esp + 0xfc], 0
mov dword [esp + 0x100], 0
mov dword [esp + 0x104], 0x3f800000
call fcn.00418090
mov ecx, eax
call fcn.004012c0
test eax, eax
je 0x4423d6
push edi
mov ecx, ebx
call fcn.00440af0
mov ecx, dword [esp + 0x110]
mov eax, dword [ecx]
test eax, eax
mov dword [esp + 0x110], eax
jne 0x4421a0
jmp 0x442cd9
cmp ecx, 0x31
je 0x4426f4
cmp ecx, 0x33
je 0x4426f4
cmp ecx, 0x30
je 0x4426f4
cmp ecx, 0x39
je 0x4426f4
cmp ecx, 0x4c
je 0x4426f4
cmp ecx, 0x4d
je 0x4426f4
cmp ecx, 0x4e
je 0x4426f4
cmp ecx, 0x3a
je 0x442445
cmp ecx, 0x3b
je 0x442445
cmp ecx, 0x3d
jne 0x442cd9
push 4
mov ecx, esi
mov dword [esp + 0x1c], 0
call fcn.00418720
test eax, eax
jle 0x442cd9
mov edi, edi
mov edx, dword [esp + 0x18]
push edx
push 4
mov ecx, esi
call fcn.00419230
mov ebp, dword [esp + 0x1c]
mov ebx, eax
mov eax, dword [ebx + 0x20]
mov edi, dword [eax]
cmp dword [esi + 8], 0x3b
mov dword [esp + 0x24], ebx
mov dword [esp + 0x10], edi
jne 0x4424a3
fld dword [ebx + 0x40]
push ecx
fmul dword [0x4d7ba8]
mov ecx, dword [ebp + 0xc]
mov ecx, dword [ecx + 0x103c]
fstp dword [esp]
push edi
call fcn.00420b20
cmp dword [esi + 8], 0x3d
jne 0x4424c5
fld dword [ebx + 0x40]
mov edx, dword [ebp + 0xc]
fmul dword [0x4d7ba8]
push ecx
mov ecx, dword [edx + 0x103c]
fstp dword [esp]
push edi
call fcn.00420b20
cmp dword [esi + 8], 0x3a
jne 0x442518
fld dword [ebx + 0x40]
mov eax, dword [ebp + 0xc]
fmul dword [0x4d7a80]
push ecx
mov ecx, dword [eax + 0x103c]
fabs
fstp dword [esp]
push edi
call fcn.00420b20
push 0
push 0x504f2c
mov ecx, esi
call fcn.00417ee0
fld dword [eax + 0xe8]
fabs
fcomp qword [0x4d7ba0]
fnstsw ax
test ah, 0x41
jne 0x442518
push 0
push 0
push esi
mov ecx, ebp
call fcn.0043ee90
mov ecx, dword [ebp + 0x1c]
mov eax, dword [ecx + 4]
mov eax, dword [eax]
test eax, eax
mov dword [esp + 0x128], eax
je 0x442642
jmp 0x442540
mov ebx, dword [esp + 0x24]
jmp 0x442540
mov edx, dword [esp + 0x128]
mov ebp, dword [edx + 8]
cmp ebp, esi
je 0x44262a
cmp dword [ebp + 8], 0x3a
jne 0x442665
test edi, edi
je 0x44262a
push 0
push 4
mov ecx, ebp
call fcn.00419230
mov ebx, eax
lea eax, [esp + 0x1d0]
push eax
lea ecx, [esp + 0x14c]
push ecx
mov ecx, dword [esp + 0x18]
lea edx, [ebx + 0x24]
push edx
call fcn.004072d0
test eax, eax
je 0x442626
fld dword [esp + 0x148]
mov eax, dword [esp + 0x24]
fmul dword [eax + 0x40]
push 0
push 0x504f40
mov ecx, ebp
fmul dword [0x4d7bb0]
fstp dword [ebx + 0x40]
call fcn.00417ee0
fld dword [ebp + 0x10c]
mov edi, eax
fmul dword [esi + 0x10c]
mov ecx, dword [edi + 0x130]
push 0
push 0x504f54
fmul dword [ebx + 0x40]
fchs
fsub dword [edi + 0xe8]
fmul qword [ecx]
mov ecx, ebp
fadd dword [edi + 0xe8]
fstp dword [edi + 0xe8]
call fcn.00417ee0
fld dword [edi + 0xe8]
push 0
fchs
push 0xff
mov ecx, eax
fstp dword [eax + 0xf0]
call fcn.00419230
mov ecx, dword [esp + 0x1c]
push eax
call fcn.0043f1b0
mov dword [ebp + 0x188], 2
mov edi, dword [esp + 0x10]
mov eax, dword [esp + 0x128]
mov eax, dword [eax]
test eax, eax
mov dword [esp + 0x128], eax
jne 0x442531
mov edi, dword [esp + 0x18]
inc edi
push 4
mov ecx, esi
mov dword [esp + 0x1c], edi
call fcn.00418720
cmp edi, eax
jl 0x442460
mov ebx, dword [esp + 0x1c]
jmp 0x442cd9
lea edx, [ebp + 0x24]
push 0x504f68
push edx
call fcn.004c4d20
add esp, 8
test eax, eax
je 0x44262a
test edi, edi
je 0x44262a
fld dword [ebp + 0xf4]
fcomp dword [0x4f911c]
fnstsw ax
test ah, 0x44
jnp 0x44262a
push 0
push 3
mov ecx, ebp
call fcn.00419230
lea ecx, [esp + 0x1b8]
push ecx
lea edx, [esp + 0x60]
push edx
add eax, 0x24
push eax
mov ecx, edi
call fcn.004072d0
test eax, eax
je 0x44262a
fld dword [esp + 0x5c]
fmul dword [ebx + 0x40]
fabs
fcomp dword [0x4d79bc]
fnstsw ax
test ah, 0x41
jne 0x44262a
mov ebx, dword [esp + 0x1c]
mov ecx, dword [ebx + 0xc]
push ebp
call fcn.0042ef70
push 0
push 0
push ebp
mov ecx, ebx
call fcn.0043ee90
jmp 0x44262a
mov eax, dword [esi + 0xf4]
mov ebp, 0x3f800000
cmp eax, ebp
jne 0x442a09
cmp ecx, 0x4c
je 0x4429b7
cmp ecx, 0x4d
je 0x4429b7
cmp ecx, 0x4e
je 0x4429b7
mov edx, dword [esi + 0x12c]
fld qword [edx]
fsub qword [esi + 0x138]
fcomp qword [0x4d7a08]
fnstsw ax
test ah, 0x41
jne 0x442cd9
cmp ecx, 0x31
jne 0x4428a8
push 0
mov ecx, esi
call fcn.00417e50
push 1
mov ecx, esi
mov ebp, eax
call fcn.00417e50
push 0x504e9c
mov ecx, ebp
mov edi, eax
call fcn.004188d0
add eax, 0x30
mov ecx, dword [eax]
mov edx, dword [eax + 4]
mov eax, dword [eax + 8]
mov dword [esp + 0x68], ecx
lea ecx, [esp + 0x194]
push ecx
lea ecx, [esp + 0x6c]
mov dword [esp + 0x70], edx
mov dword [esp + 0x74], eax
call fcn.00412830
push 0x3f4ccccd
lea edx, [esp + 0x1c8]
push edx
lea ecx, [esp + 0x70]
call fcn.00403600
fld dword [esp + 0x70]
fadd dword [edi + 0x90]
lea eax, [edi + 0xa0]
fld dword [esp + 0x6c]
push 0
fadd dword [edi + 0x8c]
push 0
fld dword [esp + 0x70]
push esi
fadd dword [edi + 0x88]
mov dword [edi + 0xf4], 0x3f800000
mov dword [edi + 0xfc], 0
fstp dword [esp + 0xc8]
mov ecx, dword [esp + 0xc8]
mov dword [eax], ecx
fstp dword [esp + 0xcc]
mov edx, dword [esp + 0xcc]
mov dword [eax + 4], edx
fstp dword [esp + 0xd0]
mov ecx, dword [esp + 0xd0]
mov dword [eax + 8], ecx
mov ecx, ebx
call fcn.0043ee90
test byte [0x50f4e0], 8
jne 0x442860
or dword [0x50f4e0], 8
mov edx, dword [ebx + 0xc]
mov eax, dword [edx]
mov ecx, dword [eax + 0xfc]
push str.SOUND_FX_CANNON
mov dword [esp + 0x210], 3
call fcn.00450d50
mov dword [0x50f4d0], eax
mov dword [esp + 0x20c], 0xffffffff
mov ecx, dword [0x50f4d0]
push 0
push 0xfffffffffffffffe
call fcn.00465df0
push 0x504eb8
mov ecx, ebp
call fcn.004188d0
mov ecx, dword [ebx + 0xc]
mov edi, eax
push edi
call fcn.00428410
mov ecx, dword [esi + 0x130]
mov edi, dword [edi + 0x1c]
push ecx
mov ecx, dword [edi]
call fcn.004620e0
mov edi, dword [edi]
mov dword [edi + 0x1034], 0
jmp 0x44298d
cmp ecx, 0x33
jne 0x442980
xor ebp, ebp
push ebp
mov ecx, esi
call fcn.00417e50
mov edi, eax
push 0x504ec0
mov ecx, edi
call fcn.004188d0
push 0x504ecc
mov ecx, edi
mov dword [edi + 0xf4], 0x3f800000
mov dword [edi + 0xfc], ebp
mov dword [edi + 0x100], ebp
call fcn.004188d0
mov ecx, dword [ebx + 0xc]
push eax
call fcn.004278b0
mov eax, dword [eax + 4]
mov dword [eax + 0x1034], 1
mov ebp, dword [edi + 0x84]
test ebp, ebp
je 0x442921
push 0
push 0
mov ecx, ebp
call fcn.0041fa80
push 0
push 0
mov ecx, ebp
call fcn.0041e340
mov edx, dword [edi + 0x12c]
fld qword [edx]
mov al, byte [0x50f4e0]
test al, 0x10
fstp qword [edi + 0x138]
jne 0x44296f
or dword [0x50f4e0], 0x10
mov eax, dword [ebx + 0xc]
mov ecx, dword [eax]
mov ecx, dword [ecx + 0xfc]
push str.SOUND_FX_ROCKET_FIRE
mov dword [esp + 0x210], 4
call fcn.00450d50
mov dword [0x50f4cc], eax
mov dword [esp + 0x20c], 0xffffffff
mov ecx, dword [0x50f4cc]
push 0
push 0xfffffffffffffffe
call fcn.00465df0
jmp 0x44298d
cmp ecx, 0x30
jne 0x44298d
push esi
mov ecx, ebx
call fcn.00440e30
push 0
push 3
mov ecx, esi
call fcn.00419230
mov eax, dword [eax + 0x1c]
mov eax, dword [eax + 4]
mov dword [eax + 0x1034], 0
mov dword [esi + 0xf4], 0x40000000
jmp 0x442cd9
fld qword [0x4d7378]
add ecx, 0xffffffb4
sub ecx, 0
je 0x4429df
dec ecx
je 0x4429d5
dec ecx
jne 0x4429e7
fstp st(0)
fld qword [0x4d7388]
jmp 0x4429e7
fstp st(0)
fld qword [0x4d7a08]
jmp 0x4429e7
fstp st(0)
fld qword [0x4d7b68]
mov edx, dword [esi + 0x12c]
fld qword [edx]
fsub qword [esi + 0x138]
fcomp st(1)
fnstsw ax
fstp st(0)
test ah, 0x41
jne 0x442cd9
jmp 0x442985
cmp dword [esi + 0xf4], 0x40000000
jne 0x442cd9
cmp ecx, 0x31
jne 0x442b31
push 1
mov ecx, esi
call fcn.00417e50
mov edi, eax
cmp dword [edi + 0xf4], ebp
jne 0x442cd9
mov eax, dword [edi + 0x108]
test eax, eax
je 0x442cd9
push 0
mov ecx, edi
call fcn.00418090
mov ebp, dword [edi + 0x84]
push 0x504eec
mov ecx, esi
mov dword [esp + 0x54], eax
call fcn.004188d0
add eax, 0x30
test ebp, ebp
mov ecx, dword [eax]
mov dword [esp + 0x44], ecx
mov edx, dword [eax + 4]
mov ecx, dword [edi + 0x104]
mov dword [esp + 0x48], edx
mov eax, dword [eax + 8]
mov dword [esp + 0x4c], eax
fld dword [esp + 0x4c]
mov dword [esp + 0xa0], ecx
fmul dword [esp + 0xa0]
fld dword [esp + 0x48]
fmul dword [esp + 0xa0]
fld dword [esp + 0x44]
fmul dword [esp + 0xa0]
fstp dword [esp + 0xe0]
mov edx, dword [esp + 0xe0]
mov dword [esp + 0x44], edx
fstp dword [esp + 0xe4]
mov eax, dword [esp + 0xe4]
mov dword [esp + 0x48], eax
fstp dword [esp + 0xe8]
mov ecx, dword [esp + 0xe8]
mov dword [esp + 0x4c], ecx
je 0x442b0e
push 0
push 0
mov ecx, ebp
call fcn.0041fa80
mov edx, dword [esp + 0x50]
add edx, 0xb0
push edx
mov ecx, ebp
call fcn.0041ed40
lea eax, [esp + 0x44]
push eax
mov ecx, ebp
call fcn.0041ed80
mov dword [edi + 0x104], 0
mov dword [edi + 0xf4], 0x40000000
mov dword [esi + 0xf4], 0x40400000
jmp 0x442cd9
cmp ecx, 0x33
jne 0x442cd9
push 0
mov ecx, esi
call fcn.00417e50
mov edi, eax
mov ebp, dword [edi + 0x84]
push 0x504ef8
mov ecx, esi
call fcn.004188d0
add eax, 0x30
test ebp, ebp
mov ecx, dword [eax]
mov dword [esp + 0x38], ecx
mov edx, dword [eax + 4]
mov dword [esp + 0x3c], edx
mov eax, dword [eax + 8]
mov dword [esp + 0x40], eax
fld dword [esp + 0x40]
mov ecx, dword [edi + 0x104]
mov dword [esp + 0x98], ecx
fmul dword [esp + 0x98]
fld dword [esp + 0x3c]
fmul dword [esp + 0x98]
fld dword [esp + 0x38]
fmul dword [esp + 0x98]
fstp dword [esp + 0x8c]
mov edx, dword [esp + 0x8c]
mov dword [esp + 0x38], edx
fstp dword [esp + 0x90]
mov eax, dword [esp + 0x90]
mov dword [esp + 0x3c], eax
fstp dword [esp + 0x94]
mov ecx, dword [esp + 0x94]
mov dword [esp + 0x40], ecx
je 0x442bf9
lea edx, [esp + 0x188]
push edx
mov ecx, ebp
call fcn.0041ebc0
lea eax, [esp + 0x188]
push eax
lea ecx, [esp + 0x3c]
push ecx
mov ecx, ebp
call fcn.0041edd0
mov edx, dword [edi + 0x12c]
fld qword [edx]
fsub qword [edi + 0x138]
fcomp qword [0x4d7a08]
fnstsw ax
test ah, 0x41
jne 0x442cd9
push 0x504f04
mov ecx, edi
call fcn.004188d0
mov eax, dword [eax + 0x1c]
mov eax, dword [eax + 4]
push 0x504f0c
mov ecx, edi
mov dword [eax + 0x1034], 0
call fcn.004188d0
mov ecx, dword [ebx + 0xc]
push eax
call fcn.00427740
push 0
push 0
mov ecx, esi
call fcn.00417e50
mov ecx, eax
call fcn.00418e00
mov eax, dword [ebx + 0xc]
mov ecx, dword [eax + 0x103c]
push ebp
call fcn.00420df0
push 0
push 0
push esi
mov ecx, ebx
mov dword [esi + 0xf4], 0x40400000
call fcn.0043ee90
test byte [0x50f4e0], 0x20
jne 0x442cc0
or dword [0x50f4e0], 0x20
mov ecx, dword [ebx + 0xc]
mov edx, dword [ecx]
mov ecx, dword [edx + 0xfc]
push str.SOUND_FX_ROCKET_EXPLODE
mov dword [esp + 0x210], 5
call fcn.00450d50
mov dword [0x50f4c8], eax
mov dword [esp + 0x20c], 0xffffffff
mov ecx, dword [0x50f4c8]
push 0
push 0xfffffffffffffffe
call fcn.00465df0
mov dword [edi + 0x84], 0
mov eax, dword [esi + 8]
cmp eax, 0x3d
jne 0x442d96
push 0
push 0xfe
mov ecx, esi
call fcn.00419230
mov eax, dword [eax + 0x40]
mov dword [esp + 0x54], eax
fld dword [esp + 0x54]
fcomp dword [0x4d741c]
fnstsw ax
test ah, 0x41
jne 0x442d13
mov dword [esp + 0x54], 0x41200000
fld dword [esp + 0x54]
mov ecx, dword [esi + 0x130]
fmul dword [0x4d7380]
push 0
push 4
fsub dword [esi + 0xf4]
fmul qword [ecx]
mov ecx, esi
fadd dword [esi + 0xf4]
fstp dword [esi + 0xf4]
call fcn.00419230
fld dword [esp + 0x54]
mov edx, dword [eax + 0x20]
fmul dword [0x4d797c]
mov eax, dword [edx]
push ecx
mov ecx, dword [ebx + 0xc]
mov ecx, dword [ecx + 0x103c]
fstp dword [esp]
push eax
call fcn.00420b20
push 1
push 4
mov ecx, esi
call fcn.00419230
fld dword [esp + 0x54]
mov edx, dword [eax + 0x20]
fmul dword [0x4d7b9c]
mov eax, dword [edx]
push ecx
fstp dword [esp]
push eax
mov eax, dword [ebx + 0xc]
mov ecx, dword [eax + 0x103c]
call fcn.00420b20
jmp 0x4434b6
cmp eax, 0x3c
jne 0x443034
push 0
push 4
mov ecx, esi
call fcn.00419230
mov ecx, dword [ebx + 0x1c]
mov dword [esp + 0x24], eax
mov eax, dword [ecx + 4]
mov eax, dword [eax]
test eax, eax
mov dword [esp + 0x100], eax
mov dword [esp + 0x28], 0
je 0x442eb5
lea ecx, [ecx]
mov edx, dword [esp + 0x100]
mov ebp, dword [edx + 8]
cmp ebp, esi
je 0x442e9d
mov eax, dword [ebp + 8]
cmp eax, 0x3a
je 0x442df8
cmp eax, 0x3b
je 0x442df8
cmp eax, 0x3d
jne 0x442e9d
push 4
mov ecx, ebp
mov dword [esp + 0x1c], 0
call fcn.00418720
test eax, eax
jle 0x442e9d
mov eax, dword [esp + 0x18]
push eax
push 4
mov ecx, ebp
call fcn.00419230
mov edi, eax
mov ecx, dword [edi + 0x20]
mov ecx, dword [ecx]
lea edx, [esp + 0x1dc]
push edx
lea eax, [esp + 0xa0]
push eax
mov eax, dword [esp + 0x2c]
add eax, 0x24
push eax
call fcn.004072d0
test eax, eax
je 0x442e83
mov eax, dword [esp + 0x24]
fld dword [eax + 0x24]
add eax, 0x24
fcomp dword [edi + 0x24]
fnstsw ax
test ah, 0x41
jne 0x442e6b
fld dword [esp + 0x9c]
fchs
fstp dword [esp + 0x9c]
fld dword [esp + 0x9c]
fmul dword [edi + 0x40]
fmul dword [0x4d7288]
fadd dword [esp + 0x28]
fstp dword [esp + 0x28]
mov edi, dword [esp + 0x18]
inc edi
push 4
mov ecx, ebp
mov dword [esp + 0x1c], edi
call fcn.00418720
cmp edi, eax
jl 0x442e11
mov ecx, dword [esp + 0x100]
mov eax, dword [ecx]
test eax, eax
mov dword [esp + 0x100], eax
jne 0x442dd0
push 1
mov ecx, esi
call fcn.00417e50
push 0
push 0
mov ecx, esi
mov dword [esp + 0x2c], eax
call fcn.00417e50
mov ecx, eax
call fcn.00417e50
mov edi, eax
push 0
mov ecx, edi
call fcn.00417e50
mov edx, dword [esp + 0x24]
mov ebp, eax
xor eax, eax
mov dword [edi + 0x104], eax
mov dword [ebp + 0x104], eax
fld dword [edx + 0xf0]
fmul dword [0x4d797c]
mov ecx, dword [edi + 0x108]
cmp ecx, eax
fabs
fst dword [edi + 0x104]
je 0x442f88
mov eax, dword [ebp + 0x108]
fstp dword [ebp + 0x104]
test eax, eax
je 0x442f8a
fld dword [esi + 0xf4]
mov eax, dword [ebp + 0x98]
fcomp dword [0x4f911c]
cmp eax, 0x3ec28f5c
fnstsw ax
jne 0x442f62
test ah, 0x44
jp 0x442f8a
fld dword [esp + 0x28]
fabs
fcomp qword [0x4d7a58]
fnstsw ax
test ah, 1
jne 0x442f8a
push 0
push 0
push esi
mov ecx, ebx
call fcn.0043ee90
jmp 0x442f8a
test ah, 0x44
jnp 0x442f8a
fld dword [esp + 0x28]
fabs
fcomp qword [0x4d7a58]
fnstsw ax
test ah, 5
jp 0x442f8a
push 0
push 0
push esi
mov ecx, ebx
call fcn.0043ee90
jmp 0x442f8a
fstp st(0)
mov eax, dword [esp + 0x24]
fld dword [eax + 0xf0]
fcomp dword [0x4f911c]
fnstsw ax
test ah, 0x41
jne 0x442fa8
mov eax, 0x3ec28f5c
jmp 0x442faa
xor eax, eax
mov dword [edi + 0xb0], eax
push 0x504f74
mov ecx, esi
mov dword [ebp + 0xb0], eax
call fcn.004188d0
mov edi, dword [eax + 0x1c]
test edi, edi
je 0x4434b6
fld dword [esp + 0x28]
mov eax, dword [edi + 4]
fmul dword [0x4d7b98]
add eax, 0x34
mov dword [esp + 0xd8], 0
mov edx, dword [esp + 0xd8]
fstp dword [esp + 0xd4]
mov ecx, dword [esp + 0xd4]
mov dword [eax], ecx
mov dword [esp + 0xdc], 0x3f800000
mov ecx, dword [esp + 0xdc]
mov dword [eax + 4], edx
mov dword [eax + 8], ecx
push 0x504f7c
mov ecx, esi
call fcn.004188d0
mov ecx, dword [edi + 4]
add eax, 0x24
push eax
call fcn.00438130
jmp 0x4434b6
cmp eax, 0x4b
je 0x443047
cmp eax, 0x29
je 0x443047
cmp eax, 0x49
jne 0x4434b6
push 0
push 2
mov ecx, esi
call fcn.00419230
mov edx, dword [ebx + 0x1c]
mov edi, eax
mov eax, dword [edx + 4]
mov eax, dword [eax]
test eax, eax
mov dword [esp + 0xb4], eax
mov dword [esp + 0x14], 0
mov dword [esp + 0x20], 0
je 0x44327a
jmp 0x443080
mov eax, dword [esp + 0xb4]
mov ebp, dword [eax + 8]
cmp ebp, esi
je 0x443249
mov eax, dword [ebp + 8]
cmp eax, 0x25
jne 0x4431d3
push 0
push 2
mov ecx, ebp
call fcn.00419230
fld dword [edi + 0x2c]
lea ebx, [eax + 0x24]
mov ecx, ebx
mov edx, dword [ecx]
mov eax, dword [ecx + 4]
mov ecx, dword [ecx + 8]
mov dword [esp + 0xd0], ecx
fsub dword [esp + 0xd0]
fld dword [edi + 0x28]
mov dword [esp + 0xcc], eax
fsub dword [esp + 0xcc]
mov dword [esp + 0xc8], edx
fld dword [edi + 0x24]
push 0
fsub dword [esp + 0xcc]
push 0xfe
mov ecx, ebp
fld st(0)
fmul st(1)
fld st(2)
fmul st(3)
faddp st(1)
fld st(3)
fmul st(4)
faddp st(1)
fsqrt
fstp dword [esp + 0x20]
fstp st(0)
fstp st(0)
fstp st(0)
call fcn.00419230
mov ebp, eax
cmp dword [esi + 8], 0x49
jne 0x4431bc
mov edx, dword [edi + 0x20]
mov ecx, dword [edi + 0x1c]
lea eax, [esp + 0x17c]
mov dword [esp + 0x50], edx
push eax
lea edx, [esp + 0xf0]
push edx
push ebx
mov dword [esp + 0xf8], 0
mov dword [esp + 0x64], 0
call fcn.004072d0
test eax, eax
je 0x44317f
fld dword [ebp + 0x40]
fmul dword [0x4d7380]
fmul dword [esp + 0xec]
fld dword [esp + 0x18]
fmul dword [0x4d76a0]
fdivp st(1)
fadd dword [esp + 0x20]
fstp dword [esp + 0x20]
jmp 0x443249
lea eax, [esp + 0x17c]
push eax
lea ecx, [esp + 0x5c]
push ecx
mov ecx, dword [esp + 0x58]
push ebx
call fcn.004072d0
test eax, eax
je 0x443249
fld dword [ebp + 0x40]
fmul dword [0x4d7380]
fmul dword [esp + 0x58]
fld dword [esp + 0x18]
fmul dword [0x4d76a0]
fdivp st(1)
jmp 0x443241
fld dword [ebp + 0x40]
fmul dword [0x4d7380]
fld dword [esp + 0x18]
fmul dword [0x4d76a0]
fdivp st(1)
jmp 0x443241
cmp eax, 0x4a
jne 0x443249
fld dword [ebp + 0xf4]
fcomp dword [0x4f911c]
fnstsw ax
test ah, 0x44
jnp 0x443249
push 0
push 2
mov ecx, ebp
call fcn.00419230
mov ebx, eax
mov ecx, dword [ebx + 0x20]
lea edx, [esp + 0x1a0]
push edx
lea eax, [esp + 0x68]
push eax
lea edx, [edi + 0x24]
push edx
mov dword [esp + 0x70], 0
call fcn.004072d0
cmp dword [esi + 8], 0x49
jne 0x44323d
fld dword [ebx + 0x30]
fcomp dword [0x4f911c]
fld dword [esp + 0x64]
fnstsw ax
test ah, 0x41
jne 0x443241
fadd dword [esp + 0x20]
fstp dword [esp + 0x20]
jmp 0x443249
fld dword [esp + 0x64]
fadd dword [esp + 0x14]
fstp dword [esp + 0x14]
mov eax, dword [esp + 0xb4]
mov eax, dword [eax]
test eax, eax
mov dword [esp + 0xb4], eax
jne 0x443080
fld dword [esp + 0x14]
fcomp dword [0x4d7284]
fnstsw ax
test ah, 0x41
jne 0x44327a
mov dword [esp + 0x14], 0x3f800000
mov eax, dword [esi + 8]
cmp eax, 0x4b
jne 0x44330a
fld dword [esp + 0x14]
push 0
fmul dword [0x4d741c]
mov ecx, esi
fstp dword [esp + 0x18]
call fcn.00418090
fld dword [esp + 0x14]
mov ecx, eax
fmul dword [0x4d7380]
fsubr dword [0x4d7284]
fsub dword [ecx + 0x150]
fmul dword [0x4d7288]
fcom dword [0x4d7288]
fnstsw ax
test ah, 0x41
jne 0x4432d0
fstp st(0)
fld dword [0x4d7288]
mov edx, dword [esi + 0x130]
mov ebx, dword [esp + 0x1c]
fmul qword [edx]
fadd dword [ecx + 0x150]
fst dword [ecx + 0x150]
fcomp dword [0x4d7288]
fnstsw ax
test ah, 0x41
jp 0x4434b6
push 0
push 0
push esi
mov ecx, ebx
call fcn.0043ee90
jmp 0x4434b6
cmp eax, 0x29
jne 0x443378
fld dword [esp + 0x14]
push 0
fmul dword [0x4d741c]
push 0xfe
mov ecx, esi
fstp dword [esp + 0x1c]
call fcn.00419230
fld dword [esp + 0x14]
mov ebx, dword [esp + 0x1c]
fcomp dword [0x4d7284]
mov edi, eax
mov eax, dword [esp + 0x14]
mov dword [edi + 0x40], eax
fnstsw ax
test ah, 0x41
jne 0x443355
push 0
push 0
push esi
mov ecx, ebx
call fcn.0043ee90
mov eax, dword [edi + 0x3c]
test eax, eax
je 0x4434b6
push eax
push edi
mov ecx, ebx
mov dword [esi + 0x188], 2
call fcn.00439270
jmp 0x4434b6
cmp eax, 0x49
jne 0x4434b2
push 0
push 2
mov ecx, esi
call fcn.00419230
mov ecx, dword [esp + 0x14]
mov edi, eax
mov dword [edi + 0x40], ecx
push 2
mov ecx, esi
call fcn.00418090
fld dword [esp + 0x14]
mov eax, dword [eax + 0xa8]
fmul dword [0x4d7424]
mov eax, dword [eax]
mov edx, dword [esp + 0x14]
mov dword [eax + 0x128], edx
mov ecx, edx
mov dword [eax + 0x13c], ecx
fstp dword [eax + 0x150]
add edi, 0x24
mov edx, edi
mov eax, dword [edx]
mov dword [esp + 0x2c], eax
mov ecx, dword [edx + 4]
mov dword [esp + 0x30], ecx
mov edx, dword [edx + 8]
push 2
mov ecx, esi
mov dword [esp + 0x38], edx
call fcn.00418090
fld dword [eax + 0x148]
fsub dword [eax + 0xbc]
mov ebx, dword [esp + 0x1c]
fsubr dword [esp + 0x2c]
fstp dword [esp + 0x2c]
fld dword [esp + 0x14]
fcomp dword [0x4d7288]
fnstsw ax
test ah, 1
jne 0x443425
mov eax, dword [esp + 0x14]
push eax
lea ecx, [esp + 0x30]
push ecx
push esi
mov ecx, ebx
call fcn.00440bc0
push 3
mov ecx, esi
call fcn.00418090
fld dword [esp + 0x20]
mov eax, dword [eax + 0xa8]
fmul dword [0x4d7424]
mov eax, dword [eax]
mov edx, dword [esp + 0x20]
mov dword [eax + 0x128], edx
mov ecx, edx
mov dword [eax + 0x13c], ecx
fstp dword [eax + 0x150]
mov edx, dword [edi]
mov dword [esp + 0x2c], edx
mov eax, dword [edi + 4]
mov dword [esp + 0x30], eax
mov ecx, dword [edi + 8]
mov dword [esp + 0x34], ecx
push 3
mov ecx, esi
call fcn.00418090
fld dword [eax + 0x148]
fsub dword [eax + 0xbc]
fld dword [esp + 0x2c]
fsub st(1)
fstp dword [esp + 0x2c]
fstp st(0)
fld dword [esp + 0x20]
fcomp dword [0x4d7288]
fnstsw ax
test ah, 1
jne 0x4434b6
mov edx, dword [esp + 0x20]
push edx
lea eax, [esp + 0x30]
push eax
push esi
mov ecx, ebx
call fcn.00440bc0
jmp 0x4434b6
mov ebx, dword [esp + 0x1c]
mov ecx, dword [esi + 8]
cmp ecx, 0x27
je 0x4434d7
cmp ecx, 0x38
je 0x4434d7
cmp ecx, 0x4c
je 0x4434d7
cmp ecx, 0x4d
je 0x4434d7
cmp ecx, 0x4e
je 0x4434d7
cmp ecx, 0x30
jne 0x443513
fild dword [esi + 0x10]
fcomp dword [0x4d7284]
fnstsw ax
test ah, 0x44
jp 0x4434f4
cmp ecx, 0x38
jne 0x4434f4
push esi
mov ecx, ebx
call fcn.00440e30
cmp dword [esi + 0x10], 2
jne 0x443513
mov eax, dword [esi + 0x84]
test eax, eax
je 0x443513
mov ecx, dword [ebx + 0xc]
mov ecx, dword [ecx + 0x103c]
push eax
call fcn.00420df0
mov eax, dword [ebx + 0x100]
test eax, eax
je 0x443524
mov dword [esi + 0x10], 1
mov eax, dword [esp + 0x130]
test eax, eax
jne 0x441460
mov edx, dword [ebx + 0x1c]
mov eax, dword [edx + 4]
mov eax, dword [eax]
test eax, eax
je 0x444623
mov esi, dword [eax + 8]
mov eax, dword [eax]
push 0
push 0xfe
mov ecx, esi
mov edi, 1
mov dword [esp + 0x138], eax
call fcn.00419230
mov ebp, eax
mov eax, dword [esi + 8]
cmp eax, 0x20
mov dword [esp + 0x58], ebp
jne 0x4435a8
push 0
push 0xfe
mov ecx, esi
call fcn.00419230
mov ecx, dword [eax + 0x3c]
test ecx, ecx
mov dword [eax + 0x40], 0x41200000
je 0x443d38
push ecx
push eax
mov ecx, ebx
mov dword [esi + 0x188], 2
call fcn.00439270
jmp 0x443d38
cmp eax, 0x43
jne 0x443692
push 0
mov ecx, esi
call fcn.00417e50
cmp dword [esi + 0x10], edi
jne 0x443d38
mov edi, dword [eax + 0x84]
test edi, edi
je 0x44361d
push 0
push 0
mov ecx, edi
call fcn.0041fa80
push str.Direction
mov ecx, esi
call fcn.004188d0
add eax, 0x30
mov ecx, dword [eax]
mov dword [esp + 0x68], ecx
fld dword [esp + 0x68]
mov edx, dword [eax + 4]
fmul dword [0x4d72a0]
mov dword [esp + 0x6c], edx
mov eax, dword [eax + 8]
lea ecx, [esp + 0x68]
fstp dword [esp + 0x68]
push ecx
mov dword [esp + 0x74], eax
mov ecx, edi
mov dword [esp + 0x74], 0
call fcn.0041ed80
mov edx, dword [esi + 0x12c]
fld qword [edx]
push 0
push 0
fstp qword [esi + 0x138]
push esi
mov ecx, ebx
mov dword [esi + 0x10], 2
call fcn.0043ee90
test byte [0x50f4e0], 0x40
jne 0x44367e
or dword [0x50f4e0], 0x40
mov eax, dword [ebx + 0xc]
mov ecx, dword [eax]
mov ecx, dword [ecx + 0xfc]
push str.SOUND_FX_CROSSBOW
mov dword [esp + 0x210], 6
call fcn.00450d50
mov dword [0x50f4c4], eax
mov dword [esp + 0x20c], 0xffffffff
mov ecx, dword [0x50f4c4]
push 0
push 0xfffffffffffffffe
call fcn.00465df0
jmp 0x443d38
lea edx, [esi + 0x24]
push 0x504fa4
push edx
call fcn.004c4d20
add esp, 8
test eax, eax
jne 0x443d38
mov eax, dword [esi + 8]
cmp eax, 0x2d
jne 0x44375d
push 0
mov ecx, esi
call fcn.00417e50
mov ebp, eax
fld dword [ebp + 0xd8]
fabs
fcomp qword [0x4d7b18]
fnstsw ax
test ah, 0x41
jp 0x443748
push 0
push 0
push esi
mov ecx, ebx
call fcn.0043ee90
mov eax, dword [ebp + 0x10]
test eax, eax
jne 0x443d38
mov al, byte [0x50f4e0]
test al, al
js 0x443731
or dword [0x50f4e0], 0x80
mov eax, dword [ebx + 0xc]
mov ecx, dword [eax]
mov ecx, dword [ecx + 0xfc]
push str.SOUND_FX_PUSH_BUTTON
mov dword [esp + 0x210], 7
call fcn.00450d50
mov dword [0x50f4c0], eax
mov dword [esp + 0x20c], 0xffffffff
mov ecx, dword [0x50f4c0]
push 0
push 0xfffffffffffffffe
call fcn.00465df0
mov dword [ebp + 0x10], edi
jmp 0x443d38
cmp dword [ebp + 0x10], edi
jne 0x443d38
mov dword [ebp + 0x10], 0
jmp 0x443d38
cmp eax, 0x21
jne 0x4438bc
push 0
mov ecx, esi
call fcn.00417e50
mov edi, eax
fld dword [edi + 0xe8]
fcomp dword [0x4f911c]
fnstsw ax
test ah, 0x44
jnp 0x443d38
mov eax, dword [edi + 0x84]
test eax, eax
je 0x4437a1
mov edx, dword [ebx + 0xc]
mov ecx, dword [edx + 0x103c]
push eax
call fcn.00420df0
fld dword [edi + 0xd0]
fcomp dword [0x4d7390]
fnstsw ax
test ah, 0x41
jp 0x443d38
push 0
push 0
push esi
mov ecx, ebx
mov dword [edi + 0xd0], 0xbf800000
mov dword [edi + 0xe8], 0
call fcn.0043ee90
push 1
push 0xfe
mov ecx, esi
call fcn.00419230
fld dword [ebp + 0x40]
fcomp dword [0x4f911c]
mov ecx, eax
fnstsw ax
test ah, 0x44
jp 0x44380c
fld dword [ecx + 0x40]
fcomp dword [0x4f911c]
fnstsw ax
test ah, 0x44
jnp 0x443d38
push 0
mov ecx, esi
call fcn.00418090
fld dword [eax + 0xf0]
fcomp dword [0x4d7390]
fnstsw ax
test ah, 0x44
jp 0x443d38
push 0x504fcc
mov ecx, esi
call fcn.004188d0
mov edi, dword [eax + 0x1c]
test edi, edi
jne 0x44384a
mov ecx, dword [ebx + 0xc]
push eax
call fcn.00428540
mov edi, eax
mov eax, dword [edi + 4]
mov ebp, 1
mov dword [eax + 0x1034], ebp
mov eax, dword [esi + 0x130]
mov ecx, dword [edi + 4]
push eax
call fcn.004620e0
mov edi, dword [edi + 4]
push 0x504fd4
mov ecx, esi
mov dword [edi + 0x1034], 0
call fcn.004188d0
mov edi, dword [eax + 0x1c]
test edi, edi
jne 0x443892
mov ecx, dword [ebx + 0xc]
push eax
call fcn.00428540
mov edi, eax
mov eax, dword [edi + 4]
mov dword [eax + 0x1034], ebp
mov ecx, dword [esi + 0x130]
push ecx
mov ecx, dword [edi + 4]
call fcn.004620e0
mov edi, dword [edi + 4]
mov dword [edi + 0x1034], 0
jmp 0x443d38
cmp eax, 0x23
jne 0x4439f9
push 0
push str.tmo_power_motor_rotor
mov ecx, esi
call fcn.00417ee0
fld dword [ebp + 0x40]
fchs
mov edi, eax
fst dword [edi + 0xf0]
fabs
fcomp qword [0x4d7358]
fnstsw ax
test ah, 0x41
jne 0x4438fb
push 0
push 0
push esi
mov ecx, ebx
call fcn.0043ee90
mov ecx, dword [0x50f4e0]
mov eax, 0x100
test eax, ecx
jne 0x443947
or ecx, eax
mov dword [0x50f4e0], ecx
mov edx, dword [ebx + 0xc]
mov eax, dword [edx]
mov ecx, dword [eax + 0xfc]
push str.SOUND_FX_MOTOR
mov dword [esp + 0x210], 8
call fcn.00450d50
mov ecx, eax
mov dword [0x50f4bc], ecx
mov dword [esp + 0x20c], 0xffffffff
jmp 0x44394d
mov ecx, dword [0x50f4bc]
fld dword [edi + 0xf0]
fabs
fcomp qword [0x4d7388]
fnstsw ax
test ah, 0x41
mov eax, dword [esi + 0x14]
jne 0x4439cb
cmp eax, 0xffffffff
jne 0x443978
push 0
push 0xfffffffffffffffe
call fcn.00465df0
mov dword [esi + 0x14], eax
jmp 0x443992
push eax
call fcn.004659d0
test eax, eax
jne 0x443992
mov ecx, dword [esi + 0x14]
push eax
push ecx
mov ecx, dword [0x50f4bc]
call fcn.00465df0
fld dword [edi + 0xf0]
fabs
fmul qword [0x4d7b90]
call fcn.004c4770
mov ecx, 0x64
sub ecx, eax
cmp ecx, 0x186a0
jbe 0x4439b9
mov ecx, 0x186a0
mov edx, dword [esi + 0x14]
push edx
push ecx
mov ecx, dword [0x50f4bc]
call fcn.00465b00
jmp 0x4439d6
cmp eax, 0xffffffff
je 0x4439d6
push eax
call fcn.00465b60
push 0
push 0xff
mov ecx, edi
call fcn.00419230
test eax, eax
je 0x443d38
push eax
mov ecx, ebx
call fcn.0043f1b0
jmp 0x443d38
cmp eax, 0x3d
jne 0x443bed
push 0
mov ecx, esi
call fcn.00417e50
mov edi, eax
mov eax, dword [esp + 0x58]
fld dword [eax + 0x40]
mov ecx, dword [edi + 0x130]
fmul dword [0x4d7a6c]
push 0
push 4
fsub dword [edi + 0xf0]
fmul qword [ecx]
mov ecx, esi
fadd dword [edi + 0xf0]
fstp dword [edi + 0xf0]
call fcn.00419230
mov edx, dword [edi + 0xf0]
mov ebp, dword [eax + 0x1c]
mov dword [eax + 0x40], edx
fld dword [edi + 0xf0]
fabs
mov dword [esp + 0x5c], eax
mov eax, dword [eax + 0x20]
mov eax, dword [eax]
fmul dword [0x4d797c]
fstp dword [eax + 0x50]
mov eax, dword [0x50f4e0]
test ah, 2
jne 0x443ab2
mov ecx, eax
or ecx, 0x200
mov dword [0x50f4e0], ecx
mov ecx, dword [ebx + 0xc]
mov edx, dword [ecx]
mov ecx, dword [edx + 0xfc]
push str.SOUND_FX_HOOVER
mov dword [esp + 0x210], 9
call fcn.00450d50
mov ecx, eax
mov dword [0x50f4b8], ecx
mov dword [esp + 0x20c], 0xffffffff
jmp 0x443ab8
mov ecx, dword [0x50f4b8]
fld dword [edi + 0xf0]
fabs
fcomp qword [0x4d7388]
fnstsw ax
test ah, 0x41
mov eax, dword [esi + 0x14]
jne 0x443b36
cmp eax, 0xffffffff
jne 0x443ae3
push 0
push 0xfffffffffffffffe
call fcn.00465df0
mov dword [esi + 0x14], eax
jmp 0x443afd
push eax
call fcn.004659d0
test eax, eax
jne 0x443afd
mov ecx, dword [0x50f4b8]
push eax
mov eax, dword [esi + 0x14]
push eax
call fcn.00465df0
fld dword [edi + 0xf0]
fabs
fmul qword [0x4d7b88]
call fcn.004c4770
mov ecx, 0x64
sub ecx, eax
cmp ecx, 0x186a0
jbe 0x443b24
mov ecx, 0x186a0
mov edx, dword [esi + 0x14]
push edx
push ecx
mov ecx, dword [0x50f4b8]
call fcn.00465b00
jmp 0x443b41
cmp eax, 0xffffffff
je 0x443b41
push eax
call fcn.00465b60
test ebp, ebp
je 0x443b9d
mov eax, dword [esp + 0x5c]
mov ecx, dword [ebp]
add eax, 0x30
push eax
call fcn.00437f70
fld dword [edi + 0xf0]
mov eax, dword [ebp]
fabs
fmul dword [0x4d76a0]
fstp dword [eax + 0x1040]
mov eax, dword [ebp]
fld dword [edi + 0xf0]
fabs
fmul dword [0x4d7b80]
fstp dword [eax + 0x1050]
mov eax, dword [ebp]
mov dword [eax + 0x1058], 0x3ecccccd
mov ebp, dword [ebp]
mov dword [ebp + 0x1034], 1
fld dword [edi + 0xf0]
fabs
fcomp qword [0x4d7358]
fnstsw ax
test ah, 0x41
jne 0x443bbe
push 0
push 0
push esi
mov ecx, ebx
call fcn.0043ee90
push 1
push 4
mov ecx, esi
call fcn.00419230
mov ecx, dword [edi + 0xf0]
mov dword [eax + 0x40], ecx
fld dword [edi + 0xf0]
mov eax, dword [eax + 0x20]
fabs
mov edx, dword [eax]
fmul dword [0x4d797c]
fstp dword [edx + 0x50]
jmp 0x443d38
cmp eax, 0x26
jne 0x443d08
push 0
push str.tmo_power_bell_clapper
mov ecx, esi
call fcn.00417ee0
fld dword [ebp + 0x40]
fabs
mov edi, eax
fst dword [esp + 0x28]
fcomp dword [0x4d741c]
fnstsw ax
test ah, 0x41
jne 0x443c26
mov dword [esp + 0x28], 0x41200000
jmp 0x443c37
fld dword [esp + 0x28]
fcomp dword [0x4d7284]
fnstsw ax
test ah, 0x41
jne 0x443c43
push 0
push 0
push esi
mov ecx, ebx
call fcn.0043ee90
mov eax, dword [edi + 0x130]
fld qword [eax]
fmul dword [esp + 0x28]
fmul qword [0x4d79d8]
fst dword [esp + 0x5c]
fadd dword [edi + 0xf4]
fld qword [0x4d7270]
call fcn.004c43fa
fst dword [edi + 0xf4]
fsin
mov ecx, dword [0x50f4e0]
mov eax, 0x400
test eax, ecx
fmul qword [0x4d76a8]
fstp dword [edi + 0xd8]
jne 0x443cc9
or ecx, eax
mov dword [0x50f4e0], ecx
mov ecx, dword [ebx + 0xc]
mov edx, dword [ecx]
mov ecx, dword [edx + 0xfc]
push str.SOUND_FX_BELLRING
mov dword [esp + 0x210], 0xa
call fcn.00450d50
mov ecx, eax
or edi, 0xffffffff
mov dword [0x50f4b4], ecx
mov dword [esp + 0x20c], edi
jmp 0x443cd2
mov ecx, dword [0x50f4b4]
or edi, 0xffffffff
fld dword [esp + 0x28]
fcomp dword [0x4d7284]
fnstsw ax
test ah, 0x41
jne 0x443cf6
cmp dword [esi + 0x14], edi
jne 0x443d38
push 0
push 0xfffffffffffffffe
call fcn.00465df0
mov dword [esi + 0x14], eax
jmp 0x443d38
mov eax, dword [esi + 0x14]
cmp eax, edi
je 0x443d38
push eax
call fcn.00465b60
mov dword [esi + 0x14], edi
jmp 0x443d38
cmp eax, 0x27
jne 0x443d38
fld dword [ebp + 0x40]
fabs
fcom dword [0x4d741c]
fnstsw ax
test ah, 0x41
je 0x443d2e
fcomp dword [0x4d72a4]
fnstsw ax
test ah, 1
jne 0x443d38
jmp 0x443d30
fstp st(0)
push esi
mov ecx, ebx
call fcn.00440e30
cmp dword [esi + 8], 0x2a
jne 0x443ec6
push 0
push 0xfe
mov ecx, esi
call fcn.00419230
mov eax, dword [eax + 0x40]
mov dword [esp + 0x20], eax
fld dword [esp + 0x20]
fcomp dword [0x4d7284]
fnstsw ax
test ah, 0x41
jne 0x443ec6
push 0
push 0
push esi
mov ecx, ebx
call fcn.0043ee90
mov ecx, dword [esi + 0x12c]
fld qword [ecx]
fsub qword [esi + 0x138]
fcomp qword [0x4d7388]
fnstsw ax
test ah, 0x41
jne 0x443df7
mov ecx, dword [0x50f4e0]
mov eax, 0x800
test eax, ecx
jne 0x443dda
or ecx, eax
mov dword [0x50f4e0], ecx
mov edx, dword [ebx + 0xc]
mov eax, dword [edx]
mov ecx, dword [eax + 0xfc]
push str.SOUND_FX_POWER_LIGHTNING
mov dword [esp + 0x210], 0xb
call fcn.00450d50
mov dword [0x50f4b0], eax
mov dword [esp + 0x20c], 0xffffffff
mov ecx, dword [0x50f4b0]
push 0
push 0xfffffffffffffffe
call fcn.00465df0
mov ecx, dword [esi + 0x12c]
fld qword [ecx]
fstp qword [esi + 0x138]
fld dword [esp + 0x20]
fcomp dword [0x4d7288]
fnstsw ax
test ah, 0x41
jne 0x443ec6
fld dword [esp + 0x20]
fcomp dword [0x4d741c]
fnstsw ax
test ah, 0x41
jne 0x443e25
mov dword [esp + 0x20], 0x41200000
mov edi, dword [ebx + 0xc]
mov edx, dword [edi]
fld qword [edx + 0x270]
fld qword [0x4d7388]
call fcn.004c43fa
fld dword [esp + 0x20]
fmul dword [0x4d7380]
mov eax, dword [edi + 0x1054]
push eax
lea ecx, [esi + 0x88]
fmulp st(1)
push ecx
mov ecx, edi
fstp dword [esp + 0x28]
mov edx, dword [esp + 0x28]
push edx
call fcn.0042cb70
mov eax, dword [ebx + 0xc]
mov ecx, dword [eax + 0x1054]
mov ebp, dword [ecx + 8]
test ebp, ebp
jbe 0x443ec6
xor edi, edi
jmp 0x443e80
mov edx, dword [ebx + 0xc]
mov eax, dword [edx + 0x1054]
mov ecx, dword [eax + 0x14]
add ecx, edi
mov edx, dword [ecx]
mov dword [esp + 0xf0], edx
mov eax, dword [ecx + 4]
push 0x3f000000
mov dword [esp + 0xf8], eax
mov ecx, dword [ecx + 8]
lea edx, [esp + 0xf4]
push edx
mov dword [esp + 0x100], ecx
push esi
mov ecx, ebx
call fcn.00440bc0
add edi, 0xc
dec ebp
jne 0x443e80
mov eax, dword [esi + 8]
cmp eax, 0x28
jne 0x443f7a
push 1
push 0xfe
mov ecx, esi
call fcn.00419230
push 0
mov ecx, esi
mov edi, eax
call fcn.00417e50
fld dword [edi + 0x40]
mov ebp, eax
mov eax, dword [esp + 0x58]
mov ecx, dword [eax + 0x40]
mov dword [esp + 0x1c], ecx
fcomp dword [esp + 0x1c]
fnstsw ax
test ah, 0x41
jne 0x443f0d
mov edx, dword [edi + 0x40]
mov dword [esp + 0x1c], edx
fld dword [esp + 0x1c]
fcomp dword [0x4d741c]
fnstsw ax
test ah, 0x41
jne 0x443f28
mov dword [esp + 0x1c], 0x41200000
jmp 0x443f39
fld dword [esp + 0x1c]
fcomp dword [0x4d7284]
fnstsw ax
test ah, 0x41
jne 0x443f45
push 0
push 0
push esi
mov ecx, ebx
call fcn.0043ee90
fld dword [esp + 0x1c]
mov eax, dword [ebp + 0x130]
fmul dword [0x4d7af0]
fsubr dword [0x4d7a14]
fsub dword [ebp + 0xe4]
fmul dword [0x4d72a4]
fmul qword [eax]
fadd dword [ebp + 0xe4]
fstp dword [ebp + 0xe4]
jmp 0x4441e3
cmp eax, 4
jne 0x443ff5
cmp dword [esi + 0xf4], 0x3f800000
jne 0x4441e3
xor edi, edi
push edi
mov ecx, esi
call fcn.00418090
mov ecx, eax
mov dword [ecx + 0x154], edi
mov dword [ecx + 0x158], 1
mov edx, dword [esi + 0x12c]
fld qword [edx]
fsub qword [esi + 0x138]
fmul qword [0x4d7b78]
fld st(0)
fsin
fmul qword [0x4d7358]
fstp dword [ecx + 0x150]
fcomp qword [0x4d7a40]
fnstsw ax
test ah, 1
jne 0x4441e3
mov dword [ecx + 0x150], edi
mov dword [esi + 0xf4], 0x40000000
jmp 0x4441e3
cmp eax, 0x3a
jne 0x444057
push 0
push str.tmo_windmill_wings
mov ecx, esi
call fcn.00417ee0
mov edi, eax
mov eax, dword [edi + 0x130]
fld qword [eax]
push 0
fld dword [edi + 0xe8]
fmul dword [0x4d7288]
push str.tmo_windmill_wheel
mov ecx, esi
fmulp st(1)
fsubr dword [edi + 0xe8]
fstp dword [edi + 0xe8]
call fcn.00417ee0
fld dword [edi + 0xe8]
fchs
fstp dword [eax + 0xf0]
mov dword [esi + 0x188], 1
jmp 0x4441e3
cmp eax, 0x13
jne 0x4440b1
push 0
push 3
mov ecx, esi
call fcn.00419230
mov ecx, dword [esi + 0x188]
test ecx, ecx
jne 0x44408a
mov ecx, dword [esi + 0x130]
fld qword [ecx]
fld dword [eax + 0x40]
fmul dword [0x4d7288]
fmulp st(1)
fsubr dword [eax + 0x40]
fstp dword [eax + 0x40]
push 2
mov ecx, esi
call fcn.00418090
mov edx, dword [eax + 0xa8]
mov eax, dword [edx]
mov eax, dword [eax + 8]
mov dword [eax + 0x5c], 0x40a00000
mov dword [eax + 0x70], 0x42480000
jmp 0x4441e3
cmp eax, 0x35
jne 0x4441b0
push 0x505084
mov ecx, esi
call fcn.004188d0
mov ecx, eax
mov eax, dword [esi + 0x130]
fld qword [eax]
mov edi, dword [ecx + 0x1c]
fld dword [ecx + 0x40]
fmul dword [0x4d7288]
fmulp st(1)
fsubr dword [ecx + 0x40]
fst dword [ecx + 0x40]
fcomp dword [0x4d741c]
fnstsw ax
test ah, 0x41
jne 0x4440f8
mov dword [ecx + 0x40], 0x41200000
fld dword [ecx + 0x40]
mov eax, dword [edi + 4]
fstp dword [eax + 0x1040]
mov eax, dword [edi + 4]
fld dword [ecx + 0x40]
mov ecx, dword [0x50f4e0]
fmul dword [0x4d7b64]
fstp dword [eax + 0x1050]
mov eax, 0x1000
test eax, ecx
jne 0x44415e
or ecx, eax
mov dword [0x50f4e0], ecx
mov ecx, dword [ebx + 0xc]
mov edx, dword [ecx]
mov ecx, dword [edx + 0xfc]
push str.SOUND_FX_FLASK
mov dword [esp + 0x210], 0xc
call fcn.00450d50
or ebp, 0xffffffff
mov dword [0x50f4ac], eax
mov dword [esp + 0x20c], ebp
jmp 0x444161
or ebp, 0xffffffff
mov eax, dword [edi + 4]
cmp dword [eax + 0x28], 5
jbe 0x444176
push 0
push 0
push esi
mov ecx, ebx
call fcn.0043ee90
mov ecx, dword [edi + 4]
cmp dword [ecx + 0x28], 1
jbe 0x444198
cmp dword [esi + 0x14], ebp
jne 0x4441e3
mov ecx, dword [0x50f4ac]
push 0
push 0xfffffffffffffffe
call fcn.00465df0
mov dword [esi + 0x14], eax
jmp 0x4441e3
mov eax, dword [esi + 0x14]
cmp eax, ebp
je 0x4441e3
mov ecx, dword [0x50f4ac]
push eax
call fcn.00465b60
mov dword [esi + 0x14], ebp
jmp 0x4441e3
lea edx, [esi + 0x24]
push 0x505098
push edx
call fcn.00403640
add esp, 8
test eax, eax
je 0x4441e3
mov eax, dword [ebx + 0xc]
mov ecx, dword [eax]
mov edx, dword [ecx + 0x27c]
mov eax, dword [ecx + 0x278]
mov ecx, dword [esi + 0x80]
push edx
push eax
call fcn.00424a20
mov eax, dword [esi + 8]
cmp eax, 0x37
jne 0x444203
mov ecx, dword [esi + 4]
mov eax, dword [ecx]
test eax, eax
je 0x4445dc
mov eax, dword [eax]
test eax, eax
jne 0x4441f8
jmp 0x4445dc
cmp eax, 0x47
jne 0x444420
fld dword [esi + 0xf4]
fcomp dword [0x4d732c]
fnstsw ax
test ah, 5
jp 0x4445dc
push 0
mov ecx, esi
call fcn.00418090
lea edx, [esp + 0x38]
push edx
lea ecx, [esp + 0x1a4]
push ecx
lea ecx, [eax + 0x68]
mov dword [esp + 0x40], 0
mov dword [esp + 0x44], 0x3f800000
mov dword [esp + 0x48], 0
call fcn.0044aa40
mov edx, dword [eax]
mov ecx, dword [eax + 4]
mov dword [esp + 0xc8], edx
mov edx, dword [eax + 8]
push 0
mov dword [esp + 0xd0], ecx
push 4
mov ecx, esi
mov dword [esp + 0xd8], edx
call fcn.00419230
fld dword [esp + 0xc8]
fmul dword [0x4d7b74]
add eax, 0x24
mov ecx, dword [eax]
fld dword [esp + 0xcc]
fmul dword [0x4d7b74]
mov dword [esp + 0x44], ecx
fld dword [esp + 0xd0]
mov edx, dword [eax + 4]
fmul dword [0x4d7b74]
mov dword [esp + 0x48], edx
mov eax, dword [eax + 8]
mov dword [esp + 0x4c], eax
fstp dword [esp + 0x184]
fxch st(1)
fadd dword [esp + 0x44]
mov dword [esp + 0x2c], 0
mov dword [esp + 0x30], 0
mov dword [esp + 0x34], 0
fstp dword [esp + 0xd4]
mov ecx, dword [esp + 0xd4]
fld dword [esp + 0x48]
mov dword [esp + 0x44], ecx
mov ecx, dword [esi + 0x84]
fadd st(1)
fstp dword [esp + 0xd8]
mov edx, dword [esp + 0xd8]
fstp st(0)
mov dword [esp + 0x48], edx
fld dword [esp + 0x4c]
fadd dword [esp + 0x184]
fstp dword [esp + 0xdc]
mov eax, dword [esp + 0xdc]
mov dword [esp + 0x4c], eax
mov eax, dword [ebx + 0xe0]
test eax, eax
jne 0x444393
fld dword [esp + 0x38]
fmul dword [0x4d7a68]
fstp dword [esp + 0x8c]
mov edx, dword [esp + 0x8c]
fld dword [esp + 0x3c]
mov dword [esp + 0x2c], edx
fmul dword [0x4d7a68]
fstp dword [esp + 0x90]
fld dword [esp + 0x40]
mov eax, dword [esp + 0x90]
fmul dword [0x4d7a68]
mov dword [esp + 0x30], eax
fstp dword [esp + 0x94]
mov edx, dword [esp + 0x94]
mov dword [esp + 0x34], edx
jmp 0x4443ec
cmp eax, 1
jne 0x4443ec
fld dword [esp + 0x38]
fmul dword [0x4d7288]
fstp dword [esp + 0xe0]
mov eax, dword [esp + 0xe0]
fld dword [esp + 0x3c]
mov dword [esp + 0x2c], eax
fmul dword [0x4d7288]
fstp dword [esp + 0xe4]
fld dword [esp + 0x40]
mov edx, dword [esp + 0xe4]
fmul dword [0x4d7288]
mov dword [esp + 0x30], edx
fstp dword [esp + 0xe8]
mov eax, dword [esp + 0xe8]
mov dword [esp + 0x34], eax
test ecx, ecx
je 0x4443ff
lea edx, [esp + 0x44]
push edx
lea eax, [esp + 0x30]
push eax
call fcn.0041edd0
fild dword [esi + 0x10]
fcomp dword [0x4d7284]
fnstsw ax
test ah, 0x44
jp 0x4445dc
push esi
mov ecx, ebx
call fcn.00440af0
jmp 0x4445dc
cmp eax, 0x3e
jne 0x4445dc
fld dword [esi + 0xf4]
fcomp dword [0x4d732c]
fnstsw ax
test ah, 5
jp 0x4445dc
push 0
push 0xc
mov ecx, esi
call fcn.00419230
lea edi, [eax + 0x24]
mov ecx, edi
mov edx, dword [ecx]
mov dword [esp + 0xb0], edx
mov eax, dword [ecx + 4]
mov dword [esp + 0xb4], eax
mov ecx, dword [ecx + 8]
mov eax, dword [ebx + 0xe0]
test eax, eax
mov dword [esp + 0xb8], ecx
mov ecx, dword [esi + 0x84]
mov dword [esp + 0x80], 0
mov dword [esp + 0x84], 0
mov dword [esp + 0x88], 0
jne 0x4444d7
mov edx, eax
mov dword [esp + 0xbc], eax
mov dword [esp + 0xc0], 0x424a6666
mov dword [esp + 0xc4], eax
mov eax, dword [esp + 0xc0]
mov dword [esp + 0x80], edx
mov dword [esp + 0x84], eax
mov dword [esp + 0x88], edx
jmp 0x444527
cmp eax, 1
jne 0x444527
mov dword [esp + 0xa4], 0
mov eax, dword [esp + 0xa4]
mov dword [esp + 0xa8], 0x41200000
mov edx, dword [esp + 0xa8]
mov dword [esp + 0xac], 0
mov dword [esp + 0x80], eax
mov eax, dword [esp + 0xac]
mov dword [esp + 0x84], edx
mov dword [esp + 0x88], eax
lea edx, [esp + 0xb0]
push edx
lea eax, [esp + 0x84]
push eax
call fcn.0041edd0
fld dword [esi + 0xf4]
fcomp dword [0x4f911c]
fnstsw ax
test ah, 0x44
jnp 0x4445dc
push 0
mov ecx, esi
call fcn.00417e50
add eax, 0x11c
mov ecx, dword [eax]
mov edx, dword [eax + 4]
mov eax, dword [eax + 8]
mov dword [esp + 0x74], ecx
fld dword [esp + 0x74]
mov ecx, dword [edi]
fchs
mov dword [esp + 0x78], edx
fld dword [esp + 0x78]
fchs
mov dword [esp + 0xb0], ecx
mov edx, dword [edi + 4]
fxch st(1)
mov ecx, dword [esi + 0x84]
fadd st(0), st(0)
test ecx, ecx
mov dword [esp + 0x7c], eax
fstp dword [esp + 0xfc]
mov dword [esp + 0xb4], edx
mov eax, dword [edi + 8]
fadd st(0), st(0)
mov dword [esp + 0xb8], eax
mov dword [esp + 0x104], 0
fstp dword [esp + 0x100]
je 0x4445dc
lea edx, [esp + 0xb0]
push edx
lea eax, [esp + 0x100]
push eax
call fcn.0041edd0
fld dword [esi + 0x8c]
fcomp dword [0x4d7b70]
fnstsw ax
test ah, 5
jp 0x444614
mov eax, dword [esi + 0x84]
test eax, eax
je 0x444608
mov ecx, dword [ebx + 0xc]
mov ecx, dword [ecx + 0x103c]
push eax
call fcn.00420df0
mov edx, dword [ebx + 0x1c]
push esi
push edx
mov ecx, ebx
call fcn.0043a510
mov eax, dword [esp + 0x130]
test eax, eax
jne 0x443543
mov ecx, dword [esp + 0x204]
pop edi
mov dword fs:[0], ecx
pop esi
pop ebp
pop ebx
mov esp, ebp
pop ebp
ret