Function at 0x45db60
Capabilities:
Packed with generic packer

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x1c
push ebx
mov ebx, dword [ebp + 8]
mov edx, dword [ebx + 4]
test edx, edx
push esi
push edi
mov esi, eax
mov edi, ecx
mov dword [ebx + 0x28], edi
mov dword [ebx + 0x1c], esi
je 0x45dbd3
mov ecx, dword [edx + 0x8c]
cmp dword [ecx + 0x7f8], 0x2b
jne 0x45dbb4
mov eax, dword [edx + 0x554c]
cmp eax, 6
je 0x45dba4
cmp eax, 8
je 0x45dba4
cmp eax, 7
jne 0x45dbb4
mov eax, dword [ecx + 0x81c]
call fcn.00521450
mov edx, dword [ebx + 4]
jmp 0x45dbbd
lea eax, [edi + edi*4]
shl eax, 4
add eax, 0x28
mov dword [ebx + 8], eax
mov eax, esi
mov ecx, edi
mov ebx, edx
call fcn.0041c740
mov ecx, dword [ebp + 8]
mov dword [ecx + 0xc], eax
mov ebx, ecx
xor edi, edi
lea eax, [edi + 7]
mov dword [ebx + 0x2c], edi
mov byte [ebx + 0x140], 1
mov dword [ebx + 0x30], edi
mov dword [ebx + 0x90], edi
call fcn.005af400
fldz
mov edx, dword [ebp + 0x10]
fst dword [ebx + 0xc0]
mov esi, dword [ebp + 0xc]
fstp dword [ebx + 0xc4]
add eax, 0xc
mov dword [ebx + 0x34], eax
or eax, 0xffffffff
mov dword [ebx + 0x80], eax
mov dword [ebx + 0x84], eax
mov eax, dword [ebx + 0x1c]
push 0x64
mov dword [ebx + 0x88], eax
mov eax, 0x50
lea ecx, [ebx + 0xc8]
push edi
push ecx
mov dword [ebx + 0x38], 5
mov dword [ebx + 0x3c], edi
mov byte [ebx + 0x141], 0
mov byte [ebx + 0x142], 0
mov dword [ebx + 0x24], esi
mov dword [ebx + 0x138], edx
mov dword [ebx + 0x40], 0x12c
mov dword [ebx + 0x50], edi
mov dword [ebx + 0x4c], 0xc8
mov dword [ebx + 0x54], edi
mov dword [ebx + 0x8c], edi
mov dword [ebx + 0x94], edi
mov dword [ebx + 0x98], edi
mov dword [ebx + 0x9c], edi
mov dword [ebx + 0xa0], edi
mov dword [ebx + 0xa4], edi
mov dword [ebx + 0xa8], edi
mov dword [ebx + 0xac], edi
mov dword [ebx + 0xb0], edi
mov dword [ebx + 0xb4], edi
mov dword [ebx + 0xb8], edi
mov dword [ebx + 0xbc], edi
mov dword [ebx + 0x10], eax
mov dword [ebx + 0x14], eax
call fcn.00626020
lea eax, [esi + esi*8]
lea eax, [eax*4 + 0x69f2b0]
mov byte [ebx + 0x143], 0
mov dword [ebx + 0x130], edi
mov dword [ebx + 0x134], edi
mov dword [ebx + 0x13c], 0xffffffff
mov edx, dword [eax + 0x1c]
mov dword [esp + 0x1c], eax
mov dword [ebx + 0x5c], edx
mov eax, dword [eax + 0x18]
add esp, 0xc
mov esi, ebx
mov dword [ebx + 0x48], eax
call fcn.0045e7c0
mov ecx, dword [esp + 0x10]
mov dword [ebx + 0x20], eax
cmp dword [ecx + 8], 0xffffffff
je 0x45de49
mov edx, dword [ebx + 0x1c]
mov eax, dword [ebx + 0x28]
mov esi, dword [ebx + 0x24]
mov edi, dword [ebx + 4]
push edx
push eax
mov eax, ebx
call fcn.00465040
fstp dword [esp + 0x1c]
mov ecx, dword [ebx + 0x20]
fld dword [esp + 0x1c]
mov edx, dword [esp + 0x18]
mov esi, dword [ebp + 8]
mov ebx, dword [edx + 8]
mov eax, dword [esi]
add esp, 8
add ecx, 1
push ecx
sub esp, 8
fstp dword [esp + 4]
fldz
fstp dword [esp]
call fcn.00453c30
fld dword [0x679674]
mov edi, eax
push ecx
fstp dword [esp]
mov dword [edi + 0x10], 0
call fcn.005af410
fadd qword [0x679358]
add esp, 4
push str.anim_idle
mov ebx, edi
fstp dword [edi + 8]
call fcn.004732c0
test al, al
je 0x45dd8f
push str.anim_idle
mov ecx, edi
call fcn.00473280
mov ecx, dword [esi]
cmp dword [ecx + 0x768], 0
je 0x45de22
mov eax, dword [ecx + 0x7f8]
cmp eax, 0x11
je 0x45ddbe
cmp eax, 0x21
je 0x45ddbe
test eax, eax
jne 0x45de22
mov eax, dword [ecx + 0x82c]
cmp dword [eax + 0x24], 5
jne 0x45de22
push str._ground
mov ebx, edi
call fcn.004732c0
test al, al
je 0x45de22
push str._ground
mov ecx, edi
call fcn.00473280
mov eax, dword [esi + 0x24]
cmp eax, 3
je 0x45de01
cmp eax, 0x31
je 0x45de01
cmp eax, 0x32
jne 0x45de22
fld dword [0x679678]
sub esp, 8
fstp dword [esp + 4]
fld dword [0x679320]
jmp 0x45de14
fld dword [0x6795c4]
sub esp, 8
fstp dword [esp + 4]
fld dword [0x679388]
fstp dword [esp]
call fcn.00511cb0
fstp dword [edi + 8]
add esp, 8
mov ecx, dword [edi + 0x9c]
mov byte [edi + 0x64], 1
mov eax, 0x190
mov dword [esi + 0x94], ecx
call fcn.005af400
add eax, 0x190
mov dword [esi + 0xb0], eax
mov ebx, esi
mov eax, dword [ebx + 0x24]
cmp eax, 8
je 0x45de7e
cmp eax, 0x18
je 0x45de7e
cmp eax, 9
je 0x45de7e
cmp eax, 0xa
je 0x45de7e
cmp eax, 0xc
je 0x45de7e
cmp eax, 0xf
je 0x45de7e
cmp eax, 0xe
je 0x45de7e
cmp eax, 0x1f
je 0x45de7e
cmp eax, 0xd
je 0x45de7e
cmp eax, 0x2a
jne 0x45dead
mov eax, dword [ebx + 4]
test eax, eax
je 0x45dead
mov eax, dword [eax + 0x554c]
cmp eax, 1
jmp 0x45dead
mov eax, dword [ebx + 0x5c]
test eax, eax
jle 0x45deec
mov ecx, dword [ebx + 0x24]
cmp ecx, 1
je 0x45dec6
cmp ecx, 0x29
je 0x45dec6
cmp ecx, 9
jne 0x45dedf
cdq
sub eax, edx
sar eax, 1
add eax, 0xfffffed5
call fcn.005af400
add eax, 0x12c
mov dword [ebx + 0x58], eax
jmp 0x45def3
add eax, 1
call fcn.005af400
mov dword [ebx + 0x58], eax
jmp 0x45def3
mov dword [ebx + 0x58], 0
mov eax, dword [ebp + 0xc]
cmp eax, 0x1b
jne 0x45df58
cmp byte [ebx + 0x144], 0
mov dword [ebx + 0x50], 0x32
je 0x45df3e
mov edx, dword [ebx]
mov eax, dword [edx + 0x7f8]
cmp eax, 0x2b
je 0x45df3e
cmp eax, 0x32
je 0x45df3e
push str.anim_blow
mov ecx, edi
call fcn.00473280
fld dword [0x679508]
fstp dword [edi + 8]
mov dword [edi + 0x10], 3
jmp 0x45e736
push str.anim_idle
mov ecx, edi
call fcn.00473280
fld dword [0x679678]
fstp dword [edi + 8]
jmp 0x45e736
test eax, eax
je 0x45e68f
cmp eax, 5
je 0x45e68f
cmp eax, 7
je 0x45e68f
cmp eax, 0x34
je 0x45e68f
cmp eax, 0x28
je 0x45e68f
cmp eax, 0x1c
jne 0x45e066
fld dword [0x679508]
sub esp, 8
fstp dword [esp + 4]
fld dword [0x67967c]
fstp dword [esp]
call fcn.00511cb0
mov ecx, dword [esp + 0x18]
fstp dword [edi + 8]
mov eax, dword [ebx + 0x20]
fldz
mov edx, dword [ebp + 8]
mov ebx, dword [ecx + 8]
add esp, 8
add eax, 2
push eax
mov eax, dword [edx]
sub esp, 8
fst dword [esp + 4]
fstp dword [esp]
call fcn.00453c30
mov esi, eax
mov dword [esi + 0x10], 0
fld dword [edi + 8]
push str.anim_head_idle
fstp dword [esi + 8]
mov ecx, esi
call fcn.00473280
mov edx, str.anim_idle
mov eax, edi
call fcn.00472f80
fldz
mov eax, dword [ebp + 8]
mov edx, dword [eax + 0x20]
mov ecx, dword [esi + 0x9c]
add edx, 2
mov dword [eax + 0x98], ecx
mov ecx, dword [esp + 0x10]
mov ebx, dword [ecx + 8]
mov eax, dword [eax]
push edx
sub esp, 8
fst dword [esp + 4]
fstp dword [esp]
call fcn.00453c30
mov esi, eax
mov dword [esi + 0x10], 0
fld dword [edi + 8]
push str.anim_splitpea_idle
fstp dword [esi + 8]
mov ecx, esi
call fcn.00473280
mov edx, str.anim_idle
mov eax, edi
call fcn.00472f80
mov eax, dword [ebp + 8]
mov edx, dword [esi + 0x9c]
mov dword [eax + 0x9c], edx
mov ebx, eax
jmp 0x45e736
cmp eax, 0x12
jne 0x45e19f
fld dword [0x679508]
sub esp, 8
fstp dword [esp + 4]
fld dword [0x67967c]
fstp dword [esp]
call fcn.00511cb0
mov edx, dword [esp + 0x18]
fstp dword [edi + 8]
mov ecx, dword [ebx + 0x20]
fldz
mov eax, dword [ebp + 8]
mov ebx, dword [edx + 8]
mov eax, dword [eax]
add esp, 8
add ecx, 2
push ecx
sub esp, 8
fst dword [esp + 4]
fstp dword [esp]
call fcn.00453c30
mov esi, eax
mov dword [esi + 0x10], 0
fld dword [edi + 8]
push str.anim_head_idle1
fstp dword [esi + 8]
mov ecx, esi
call fcn.00473280
mov edx, str.anim_head1
mov eax, edi
call fcn.00472f80
fldz
mov eax, dword [ebp + 8]
mov edx, dword [eax + 0x20]
mov ecx, dword [esi + 0x9c]
add edx, 2
mov dword [eax + 0x98], ecx
mov ecx, dword [esp + 0x10]
mov ebx, dword [ecx + 8]
mov eax, dword [eax]
push edx
sub esp, 8
fst dword [esp + 4]
fstp dword [esp]
call fcn.00453c30
mov esi, eax
mov dword [esi + 0x10], 0
fld dword [edi + 8]
push str.anim_head_idle2
fstp dword [esi + 8]
mov ecx, esi
call fcn.00473280
mov edx, str.anim_head2
mov eax, edi
call fcn.00472f80
fldz
mov eax, dword [ebp + 8]
mov ecx, dword [eax + 0x20]
mov edx, dword [esi + 0x9c]
add ecx, 2
mov dword [eax + 0x9c], edx
mov edx, dword [esp + 0x10]
mov ebx, dword [edx + 8]
mov eax, dword [eax]
push ecx
sub esp, 8
fst dword [esp + 4]
fstp dword [esp]
call fcn.00453c30
mov esi, eax
mov dword [esi + 0x10], 0
fld dword [edi + 8]
push str.anim_head_idle3
fstp dword [esi + 8]
mov ecx, esi
call fcn.00473280
mov edx, str.anim_head3
mov eax, edi
call fcn.00472f80
mov eax, dword [esi + 0x9c]
mov ecx, dword [ebp + 8]
mov dword [ecx + 0xa0], eax
mov ebx, ecx
jmp 0x45e736
cmp eax, 3
jne 0x45e1ad
mov dword [ebx + 0x40], 0x1770
jmp 0x45e220
cmp eax, 0x31
jne 0x45e1ff
mov eax, 0x3e8
mov dword [ebx + 0x40], 0xfa0
call fcn.005af400
add eax, 0x3e8
mov dword [ebx + 0xb0], eax
push 0x40
mov edx, 0x40
mov ecx, 0xff
lea eax, [esp + 0x1c]
call fcn.005643d0
mov edx, dword [eax]
mov dword [edi + 0x48], edx
mov ecx, dword [eax + 4]
mov dword [edi + 0x4c], ecx
mov edx, dword [eax + 8]
mov dword [edi + 0x50], edx
mov eax, dword [eax + 0xc]
mov dword [edi + 0x54], eax
jmp 0x45e736
cmp eax, 0x32
jne 0x45e20d
mov dword [ebx + 0x40], 0xfa0
jmp 0x45e220
cmp eax, 0x17
jne 0x45e23a
mov dword [ebx + 0x40], 0x1bf52
mov dword [ebx + 0x14], 0x50
mov eax, 0x3e8
call fcn.005af400
add eax, 0x3e8
mov dword [ebx + 0xb0], eax
jmp 0x45e736
cmp eax, 0x24
jne 0x45e27b
mov dword [ebx + 0x40], 0x1f40
mov ecx, dword [edi + 0xc]
xor eax, eax
cmp dword [ecx + 4], eax
jle 0x45e736
xor ecx, ecx
jmp 0x45e260
mov edx, dword [edi + 0x58]
mov byte [ecx + edx + 0x5d], 0
mov edx, dword [edi + 0xc]
add eax, 1
add ecx, 0x60
cmp eax, dword [edx + 4]
jl 0x45e260
jmp 0x45e736
cmp eax, 0x2d
jne 0x45e2ab
mov ecx, dword [edi + 0xc]
xor eax, eax
cmp dword [ecx + 4], eax
jle 0x45e736
xor ecx, ecx
mov edx, dword [edi + 0x58]
mov byte [ecx + edx + 0x5d], 0
mov edx, dword [edi + 0xc]
add eax, 1
add ecx, 0x60
cmp eax, dword [edx + 4]
jl 0x45e290
jmp 0x45e736
cmp eax, 2
je 0x45e2e7
cmp eax, 0x30
jne 0x45e2e2
fld dword [0x66541c]
sub esp, 8
fstp dword [esp + 4]
fld dword [0x6795f0]
fstp dword [esp]
call fcn.00511cb0
fstp dword [edi + 8]
add esp, 8
mov dword [ebx + 0x54], 0xc8
jmp 0x45e736
cmp eax, 0x14
jne 0x45e321
mov eax, ebx
call fcn.004638f0
test al, al
je 0x45e736
push str.anim_explode
mov ecx, edi
mov dword [ebx + 0x50], 0x64
call fcn.00473280
mov dword [edi + 0x10], 3
mov eax, dword [ebx]
mov esi, 0x39
call fcn.00453630
jmp 0x45e736
cmp eax, 4
jne 0x45e371
fld dword [0x679388]
mov eax, ebx
fstp dword [edi + 8]
call fcn.004638f0
test al, al
je 0x45e359
push 0xffffffffffffffff
push str.anim_glow
mov ebx, edi
call fcn.004739e0
mov eax, dword [ebp + 8]
mov dword [eax + 0x54], 0x5dc
mov ebx, eax
jmp 0x45e736
push str.anim_armed
mov ecx, edi
call fcn.00473280
mov dword [ebx + 0x3c], 0x10
jmp 0x45e736
cmp eax, 0xb
jne 0x45e3b0
mov eax, ebx
call fcn.004638f0
test al, al
je 0x45e736
push str.anim_land
mov ecx, edi
call fcn.00473280
mov dword [edi + 0x10], 3
mov eax, dword [ebx]
mov esi, 0x36
mov dword [ebx + 0x3c], 8
call fcn.00453630
jmp 0x45e736
cmp eax, 9
jne 0x45e429
mov eax, ebx
mov dword [edi + 0x20], 6
call fcn.004638f0
test al, al
je 0x45e3fa
mov eax, 0xa
call fcn.005af400
sub eax, 5
add dword [ebx + 8], eax
mov eax, 0xa
call fcn.005af400
sub eax, 5
add dword [ebx + 0xc], eax
jmp 0x79b224
cmp byte [ebx + 0x143], 0
mov ecx, edi
je 0x45e40c
push str.anim_bigsleep
jmp 0x45e411
push str.anim_bigidle
call fcn.00473280
mov dword [ebx + 0x3c], 0x17
mov dword [ebx + 0x54], 0x2ee0
jmp 0x45e736
cmp eax, 8
je 0x45e65b
cmp eax, 0x18
je 0x45e65b
cmp eax, 0x1e
jne 0x45e461
push 1
mov dword [ebx + 0x40], 0x30d40
mov dword [ebx + 0x10], 0x78
push str.Pumpkin_back
mov ebx, edi
call fcn.004739e0
jmp 0x45e733
cmp eax, 6
jne 0x45e472
mov dword [ebx + 0x3c], 1
jmp 0x45e736
cmp eax, 0x19
jne 0x45e4d4
cmp byte [ebx + 0x144], 0
mov dword [ebx + 0x54], 0x32
je 0x45e492
mov ecx, dword [ebx]
cmp dword [ecx + 0x7f8], 0x2b
je 0x45e4ae
mov edx, dword [ebx + 0xc]
mov eax, dword [ebx + 8]
push 0x2e
push 0x7a121
add edx, 0x28
push edx
add eax, 0x28
push eax
mov edi, ebx
call fcn.0045eea0
mov eax, ebx
call fcn.004638f0
test al, al
je 0x45e736
mov ecx, dword [ebx]
mov edx, dword [ecx]
mov eax, dword [0x6a75f8]
mov edx, dword [edx + 0xd8]
push eax
call edx
jmp 0x45e736
cmp eax, 0x16
je 0x45e736
cmp eax, 0x26
jne 0x45e508
fld dword [0x679508]
sub esp, 8
fstp dword [esp + 4]
fld dword [0x67967c]
fstp dword [esp]
call fcn.00511cb0
fstp dword [edi + 8]
add esp, 8
jmp 0x45e736
cmp eax, 0x1a
jne 0x45e519
mov dword [ebx + 0x3c], 0x1e
jmp 0x45e736
cmp eax, 0x23
jne 0x45e52a
mov dword [ebx + 0x50], 0x64
jmp 0x45e736
cmp eax, 0xd
jne 0x45e53b
mov dword [ebx + 0x3c], 1
jmp 0x45e736
cmp eax, 0x2f
jne 0x45e56e
mov eax, ebx
call fcn.004638f0
test al, al
je 0x45e736
push str.anim_unarmed_idle
mov ecx, edi
mov dword [ebx + 0x3c], 0x23
mov dword [ebx + 0x54], 0x1f4
call fcn.00473280
jmp 0x45e736
cmp eax, 0x22
jne 0x45e585
push 0xffffffffffffffff
push str.Cornpult_butter
push edi
call fcn.00473a40
jmp 0x45e736
cmp eax, 0x1f
jne 0x45e5bb
mov ecx, dword [edi + 0xc]
xor eax, eax
cmp dword [ecx + 4], eax
jle 0x45e736
xor ecx, ecx
lea ebx, [ebx]
mov edx, dword [edi + 0x58]
mov byte [ecx + edx + 0x5d], 0
mov edx, dword [edi + 0xc]
add eax, 1
add ecx, 0x60
cmp eax, dword [edx + 4]
jl 0x45e5a0
jmp 0x45e736
cmp eax, 0x2e
jne 0x45e5cc
mov dword [ebx + 0x40], 0x3e8
jmp 0x45e736
cmp eax, 0x33
je 0x45e736
cmp eax, 0x21
jne 0x45e5fc
mov eax, ebx
call fcn.004638f0
test al, al
je 0x45e736
mov dword [ebx + 0x3c], 0x2f
mov dword [ebx + 0x54], 0x64
jmp 0x45e736
cmp eax, 0x10
jne 0x45e623
mov eax, ebx
call fcn.004638f0
test al, al
je 0x45e736
mov dword [ebx + 0x3c], 0x30
mov dword [ebx + 0x54], 0x64
jmp 0x45e736
cmp eax, 0x13
jne 0x45e736
mov ecx, dword [edi + 0xc]
xor eax, eax
cmp dword [ecx + 4], eax
jle 0x45e736
xor ecx, ecx
lea esp, [esp]
mov edx, dword [edi + 0x58]
mov byte [ecx + edx + 0x5d], 0
mov edx, dword [edi + 0xc]
add eax, 1
add ecx, 0x60
cmp eax, dword [edx + 4]
jl 0x45e640
jmp 0x45e736
mov eax, ebx
call fcn.004638f0
test al, al
je 0x45e736
mov eax, 0xa
call fcn.005af400
sub eax, 5
add dword [ebx + 8], eax
mov eax, 6
call fcn.005af400
sub eax, 3
add dword [ebx + 0xc], eax
jmp 0x45e736
test edi, edi
je 0x45e736
fld dword [0x679674]
push ecx
fstp dword [esp]
call fcn.005af410
fadd qword [0x679360]
mov ecx, dword [esp + 0x14]
mov edx, dword [ebp + 8]
add esp, 4
fstp dword [edi + 8]
mov eax, dword [ebx + 0x20]
fldz
mov ebx, dword [ecx + 8]
add eax, 2
push eax
mov eax, dword [edx]
sub esp, 8
fst dword [esp + 4]
fstp dword [esp]
call fcn.00453c30
mov esi, eax
mov dword [esi + 0x10], 0
fld dword [edi + 8]
push str.anim_head_idle
fstp dword [esi + 8]
mov ecx, esi
call fcn.00473280
mov eax, dword [esi + 0x9c]
mov ecx, dword [ebp + 8]
push str.anim_stem
mov ebx, edi
mov dword [ecx + 0x98], eax
call fcn.004732c0
test al, al
je 0x45e717
mov edx, str.anim_stem
jmp 0x45e72c
push str.anim_idle
mov ebx, edi
call fcn.004732c0
test al, al
je 0x45e733
mov edx, str.anim_idle
mov eax, edi
call fcn.00472f80
mov ebx, dword [ebp + 8]
mov edx, dword [ebx]
cmp dword [edx + 0x7f8], 0x27
jne 0x45e75b
mov eax, dword [ebx + 0x24]
cmp eax, 3
je 0x45e753
cmp eax, 1
je 0x45e753
cmp eax, 0x26
jne 0x45e75b
mov eax, dword [ebx + 0x40]
add eax, eax
mov dword [ebx + 0x40], eax
cmp dword [ebx + 0x24], 0x21
mov ecx, dword [ebx + 0x40]
mov dword [ebx + 0x44], ecx
je 0x45e7aa
cmp byte [ebx + 0x144], 0
je 0x45e7aa
mov edx, dword [ebx + 0x28]
mov esi, dword [ebp + 8]
mov ebx, dword [ebx + 0x1c]
push edx
mov edx, dword [esi + 4]
call fcn.0040d220
test eax, eax
je 0x45e7aa
mov ecx, dword [esi]
fldz
mov eax, dword [eax + 0x94]
mov edx, dword [ecx + 0x820]
mov ecx, dword [edx + 8]
and eax, 0xffff
lea edx, [eax + eax*4]
mov eax, dword [ecx]
shl edx, 5
fstp dword [eax + edx + 8]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0xc