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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x28
push ebx
push ebp
push esi
mov esi, ecx
mov al, byte [esi + 0x2f]
test al, al
push edi
jne 0x480f49
mov ebp, dword [esi + 0x10]
mov eax, dword [ebp + 0x80]
test eax, eax
jne 0x48063d
mov dword [esi + 0x30], fcn.004cbd60
mov dword [esi + 0x34], fcn.004cbd60
pop edi
pop esi
pop ebp
pop ebx
mov esp, ebp
pop ebp
ret
movzx eax, byte [esi + 0x2e]
cmp eax, 4
ja case.default.0x48064a
jmp dword [eax*4 + 0x4810e4]
mov ecx, dword [ebp + 0xb0]
mov eax, dword [ebp + 0xe4]
mov edx, dword [ecx + eax*4 + 0x2a4]
mov dword [esi + 0x30], edx
mov dword [esi + 0x34], 0x47b400
mov ecx, dword [ebp + 0x44]
cmp ecx, 2
mov dword [esp + 0x18], 0xffff
jne 0x48068d
mov dword [esi + 0x30], 0x480240
pop edi
pop esi
pop ebp
pop ebx
mov esp, ebp
pop ebp
ret
mov eax, dword [esi + 8]
mov edx, dword [esi + 0xc]
lea edi, [esi + 8]
mov dword [esp + 0x28], eax
mov eax, dword [ebp + 0xe4]
xor ebx, ebx
cmp eax, 8
mov dword [esp + 0x2c], edx
mov dword [esp + 0x14], 0
mov dword [esp + 0x30], eax
ja case.default.0x4806bb
jmp dword [eax*4 + 0x4810f8]
test ecx, ecx
mov ebp, dword [ebp + 0x84]
movzx ebx, byte [ebp + 0x408]
mov dword [esp + 0x14], ebx
je case.default.0x4806bb
movzx ecx, word [esi + 0xa]
movzx eax, word [esi + 0xc]
movzx edx, word [edi]
movzx ebx, byte [ebp + 0x1407]
add eax, ecx
lea ecx, [eax + edx + 3]
mov eax, 0x2aaaaaab
imul ecx
sar edx, 3
mov eax, edx
shr eax, 0x1f
add eax, edx
mov cx, word [eax*2 + 0x68ee9c]
mov word [esp + 0x18], cx
jmp case.default.0x4806bb
push edi
mov ecx, ebp
call fcn.00472770
mov ecx, dword [ebp + 0x44]
test ecx, ecx
mov dword [esp + 0x14], eax
jne 0x480730
mov ebx, eax
jmp case.default.0x4806bb
lea edx, [esp + 0x20]
push edx
push eax
mov ecx, ebp
call fcn.00472730
movzx ecx, word [esi + 0xc]
movzx eax, word [esp + 0x24]
movzx ebx, word [esp + 0x22]
sub eax, ecx
movzx ecx, word [esi + 0xa]
sub ebx, ecx
movzx ecx, word [edi]
movzx edi, word [esp + 0x20]
sub edi, ecx
test eax, eax
mov dword [esp + 0x28], ecx
jge 0x48076f
mov ecx, eax
neg ecx
mov dword [esp + 0x20], ecx
jmp 0x480773
mov dword [esp + 0x20], eax
test ebx, ebx
mov edx, ebx
jge 0x48077b
neg edx
test edi, edi
mov ecx, edi
jge 0x480783
neg ecx
add ecx, edx
add ecx, dword [esp + 0x20]
cmp ecx, 8
mov dword [esp + 0x20], ecx
jge 0x48079b
mov ebx, dword [esp + 0x14]
jmp case.default.0x4806bb
movzx ecx, word [esi + 0xc]
sub ecx, eax
push ecx
call fcn.00472c60
mov word [esp + 0x20], ax
movzx eax, word [esi + 0xa]
sub eax, ebx
push eax
call fcn.00472c60
mov word [esp + 0x22], ax
mov eax, dword [esp + 0x30]
sub eax, edi
push eax
call fcn.00472c60
add esp, 0xc
lea ecx, [esp + 0x18]
push ecx
mov ecx, ebp
mov word [esp + 0x1c], ax
call fcn.00472770
lea edx, [esp + 0x18]
mov ebx, eax
push edx
push ebx
mov ecx, ebp
call fcn.00472730
movzx ecx, word [esi + 0xc]
movzx eax, word [esp + 0x1c]
movzx edx, word [esi + 0xa]
mov ebp, dword [esp + 0x28]
sub eax, ecx
movzx ecx, word [esp + 0x1a]
sub ecx, edx
movzx edx, word [esp + 0x18]
sub edx, ebp
test eax, eax
jge 0x480813
neg eax
test ecx, ecx
jge 0x480819
neg ecx
test edx, edx
jge 0x48081f
neg edx
add ecx, edx
add ecx, eax
mov eax, dword [esp + 0x20]
add ecx, eax
shl eax, 4
cdq
idiv ecx
cmp eax, 0xf
jle 0x480839
mov eax, 0xf
mov dx, word [eax*2 + 0x68ee9c]
mov word [esp + 0x18], dx
jmp case.default.0x4806bb
push edi
call fcn.004701f0
movzx eax, ax
lea ecx, [esp + 0x2c]
push ecx
mov dword [esp + 0x1c], eax
call fcn.004701f0
add esp, 8
movzx ebx, ax
jmp case.default.0x4806bb
push edi
call fcn.00470220
movzx edx, ax
lea eax, [esp + 0x2c]
push eax
mov dword [esp + 0x1c], edx
call fcn.00470220
add esp, 8
movzx ebx, ax
jmp case.default.0x4806bb
push edi
call fcn.00405690
lea ecx, [esp + 0x2c]
push ecx
mov dword [esp + 0x1c], eax
call fcn.00405690
add esp, 8
jmp 0x4808c0
push 0xff
push edi
call fcn.00405690
lea edx, [esp + 0x30]
push 0xff
push edx
mov dword [esp + 0x24], eax
call fcn.00405690
add esp, 0x10
mov ebx, eax
mov eax, dword [esi + 0x4c]
test eax, eax
jne 0x4808e8
mov eax, dword [esp + 0x30]
cmp eax, 4
jl 0x4808db
cmp eax, 8
jg 0x4808db
push 4
jmp 0x4808dd
push 0x40
call fcn.00446b60
add esp, 4
mov dword [esi + 0x4c], eax
mov ecx, dword [esi + 0x4c]
mov eax, dword [esi + 0x10]
mov edx, dword [eax + 0xe4]
push ecx
mov ecx, dword [esp + 0x18]
push 4
push edx
mov edx, dword [eax + 0xa8]
movzx eax, word [esp + 0x24]
push ebx
push ecx
and edx, 3
push edx
push eax
call fcn.00472c80
add esp, 0x1c
mov byte [esi + 0x2f], 1
mov dword [esi + 4], 0x80008000
pop edi
pop esi
pop ebp
pop ebx
mov esp, ebp
pop ebp
ret
mov dword [esi + 0x30], fcn.004cbd60
mov dword [esi + 0x34], 0x47f5e0
mov byte [esi + 0x2f], 1
mov dword [esi + 4], 0x80008000
pop edi
pop esi
pop ebp
pop ebx
mov esp, ebp
pop ebp
ret
mov dword [esi + 0x30], fcn.004cbd60
mov dword [esi + 0x34], 0x47f8e0
mov byte [esi + 0x2f], 1
mov dword [esi + 4], 0x80008000
pop edi
pop esi
pop ebp
pop ebx
mov esp, ebp
pop ebp
ret
mov ebx, dword [esi + 0x4c]
mov edi, dword [ebx + 4]
test edi, edi
je 0x481058
mov eax, dword [edi + 0xc]
cmp eax, 6
mov dword [esp + 0x30], eax
je 0x480998
mov ecx, edi
call fcn.00446190
test al, al
je 0x481058
mov eax, dword [esp + 0x30]
mov ecx, dword [edi + 0x24]
test ecx, ecx
jne 0x4809a8
cmp eax, 6
je 0x481058
mov al, byte [esi + 0x2c]
test al, al
mov dword [esi + 0x30], 0x47f9b0
mov eax, 0x47b720
jne 0x4809c0
mov eax, fcn.004794b0
mov dword [esi + 0x34], eax
cmp dword [ebp + 0xd0], 9
mov ebx, dword [ebx + 4]
jl 0x480b06
mov eax, dword [ebx + 0xc]
cmp eax, 3
jl 0x480b06
cmp eax, 5
jg 0x480b06
mov al, byte [0x72b980]
test al, al
je 0x4809f5
emms
emms
mov eax, dword [esi + 0x4c]
fild dword [eax + 0x24]
sub esp, 0x10
fld st(0)
fmul st(1)
fstp qword [esp + 0x28]
fstp st(0)
fild dword [eax + 0x28]
fld st(0)
fmul st(1)
fstp qword [esp + 0x30]
fstp st(0)
fild dword [eax + 0x2c]
fld st(0)
fmul st(1)
fstp qword [esp + 0x38]
fstp st(0)
fild dword [eax + 0x30]
fld st(0)
fmul st(1)
fstp qword [esp + 0x40]
fstp st(0)
fld qword [esp + 0x40]
fadd qword [esp + 0x30]
fstp qword [esp + 8]
fld qword [esp + 0x38]
fadd qword [esp + 0x28]
fstp qword [esp]
call fcn.0047c640
fstp qword [esp + 8]
fld qword [esp + 0x40]
fadd qword [esp + 0x38]
fstp qword [esp]
call fcn.0047c640
fstp qword [esp + 8]
fld qword [esp + 0x30]
fadd qword [esp + 0x28]
fstp qword [esp]
call fcn.0047c640
add esp, 8
fstp qword [esp]
call fcn.00519250
add esp, 8
call fcn.00519000
mov edi, eax
cmp edi, 0x20000
mov ecx, ebx
jl 0x480b06
push 0
call fcn.00488470
mov ecx, eax
test ecx, ecx
je 0x480b06
mov ebp, dword [esi + 0x4c]
mov eax, dword [ebp + 0x24]
cdq
sub eax, edx
sar eax, 1
mov dword [ebp + 0x24], eax
mov ebp, dword [esi + 0x4c]
mov eax, dword [ebp + 0x28]
cdq
sub eax, edx
sar eax, 1
mov dword [ebp + 0x28], eax
mov ebp, dword [esi + 0x4c]
mov eax, dword [ebp + 0x2c]
cdq
sub eax, edx
sar eax, 1
mov dword [ebp + 0x2c], eax
mov ebp, dword [esi + 0x4c]
mov eax, dword [ebp + 0x30]
cdq
sub eax, edx
sar eax, 1
mov dword [ebp + 0x30], eax
mov ebp, dword [esi + 0x4c]
mov eax, dword [ebp + 0x34]
cdq
sub eax, edx
sar eax, 1
mov dword [ebp + 0x34], eax
mov ebp, dword [esi + 0x4c]
mov eax, dword [ebp + 0x38]
cdq
sub eax, edx
sar eax, 1
mov dword [ebp + 0x38], eax
mov eax, edi
cdq
sub eax, edx
sar eax, 1
mov edi, eax
cmp edi, 0x20000
mov ebx, ecx
jge 0x480a92
mov ecx, ebx
call fcn.004879f0
mov eax, dword [esi + 0x4c]
mov ecx, dword [eax + 0x24]
mov dword [eax + 0x68], ecx
mov eax, dword [esi + 0x4c]
mov edx, dword [eax + 0x28]
mov dword [eax + 0x6c], edx
mov eax, dword [esi + 0x4c]
mov ecx, dword [eax + 0x2c]
mov dword [eax + 0x78], ecx
mov eax, dword [esi + 0x4c]
mov edx, dword [eax + 0x30]
mov dword [eax + 0x7c], edx
mov eax, dword [esi + 0x4c]
mov dword [eax + 0x60], esi
mov ecx, dword [esi + 0x4c]
mov dword [ecx + 0x64], ebx
mov eax, dword [ebx + 0x24]
mov edx, dword [esi + 0x4c]
mov dword [edx + 0x74], eax
mov ecx, dword [esi + 0x10]
mov eax, dword [ecx + 0x84]
test eax, eax
je 0x480b5a
add eax, 0x408
jmp 0x480b5c
xor eax, eax
mov edx, dword [esi + 0x4c]
mov dword [edx + 0x70], eax
mov edi, dword [esi + 0x4c]
mov eax, dword [edi + 0x40]
test eax, eax
lea ecx, [edi + 0x40]
je 0x480cfa
mov eax, dword [esi + 0x10]
cmp dword [eax + 0xd0], 7
mov ebp, 0x100
jl 0x480b97
call fcn.0044c840
test eax, eax
je 0x480b97
cmp word [edi + 0x44], bp
je 0x480cfa
push 0x414
call fcn.00446b60
mov edx, eax
add esp, 4
test edx, edx
je 0x480bb9
mov ecx, 0x105
xor eax, eax
mov edi, edx
rep stosd dword es:[edi], eax
mov edi, edx
jmp 0x480bbb
xor edi, edi
test edi, edi
mov ecx, dword [esi + 0x4c]
mov dword [ecx + 0x54], edi
je 0x480d01
mov eax, dword [esi + 0x4c]
cmp word [eax + 0x44], bp
jl 0x480be4
cmp word [eax + 0x46], 0
jl 0x480be4
mov al, byte [esi + 0x2c]
test al, al
jne 0x480be4
xor eax, eax
jmp 0x480be9
mov eax, 1
mov byte [edi + 0x400], al
mov edx, dword [esi + 0x10]
cmp dword [edx + 0xd0], 7
jl 0x480c24
mov ecx, dword [esi + 0x4c]
add ecx, 0x40
call fcn.0044c840
test eax, eax
je 0x480c24
mov byte [edi + 0x400], 3
mov eax, dword [esi + 0x4c]
mov cx, word [eax + 0x44]
mov word [edi + 0x40a], cx
jmp 0x480d01
mov edx, dword [esi + 0x4c]
mov ax, word [edx + 0x44]
mov word [edi + 0x40a], ax
mov ecx, dword [esi + 0x4c]
mov dx, word [ecx + 0x48]
mov word [edi + 0x408], dx
mov eax, dword [esi + 0x4c]
mov cx, word [eax + 0x4c]
mov word [edi + 0x406], cx
mov edx, dword [esi + 0x4c]
mov ax, word [edx + 0x50]
mov word [edi + 0x404], ax
mov ecx, dword [esi + 0x4c]
mov dx, word [ecx + 0x46]
mov word [edi + 0x412], dx
mov eax, dword [esi + 0x4c]
mov cx, word [eax + 0x4a]
mov word [edi + 0x410], cx
mov edx, dword [esi + 0x4c]
mov ax, word [edx + 0x4e]
mov word [edi + 0x40e], ax
mov ecx, dword [esi + 0x4c]
mov dx, word [ecx + 0x52]
mov word [edi + 0x40c], dx
mov eax, dword [esi + 0x4c]
movsx ecx, word [eax + 0x4a]
movsx edx, word [eax + 0x48]
push edi
push ecx
push edx
call fcn.00472df0
mov eax, dword [esi + 0x4c]
movsx edx, word [eax + 0x4e]
movsx eax, word [eax + 0x4c]
lea ecx, [edi + 0x100]
push ecx
push edx
push eax
call fcn.00472df0
mov eax, dword [esi + 0x4c]
movsx edx, word [eax + 0x52]
movsx eax, word [eax + 0x50]
lea ecx, [edi + 0x200]
push ecx
push edx
push eax
call fcn.00472df0
mov eax, dword [esi + 0x4c]
movsx ecx, word [eax + 0x46]
movsx edx, word [eax + 0x44]
add edi, 0x300
push edi
push ecx
push edx
call fcn.00472df0
add esp, 0x30
mov byte [edi], 0
jmp 0x480d01
mov dword [edi + 0x54], 0
mov eax, dword [esi + 0x4c]
mov dword [eax + 0x5c], 0
mov ecx, dword [esi + 0x4c]
mov byte [ecx + 2], 0
mov edx, dword [esi + 0x10]
mov eax, dword [edx + 0xd0]
mov ebp, 8
cmp eax, ebp
jl 0x480d84
mov eax, dword [esi + 0x4c]
or byte [eax + 2], 2
mov eax, dword [esi + 0x10]
test byte [eax + 0x3c], 4
je 0x480d3b
mov eax, dword [esi + 0x4c]
or byte [eax + 2], 4
mov eax, dword [esi + 0x4c]
mov ecx, dword [eax + 0x68]
mov edx, dword [eax + 0x78]
cmp ecx, edx
mov edi, ecx
jl 0x480d4c
mov edi, edx
mov ecx, dword [eax + 0x6c]
mov edx, dword [eax + 0x7c]
cmp ecx, edx
jl 0x480d58
mov ecx, edx
xor edx, edx
test edi, edi
setge dl
dec edx
and edx, edi
test ecx, ecx
mov dword [eax + 0x80], edx
jge 0x480d77
mov eax, dword [esi + 0x4c]
mov dword [eax + 0x84], ecx
jmp 0x480d84
mov ecx, dword [esi + 0x4c]
mov dword [ecx + 0x84], 0
mov edi, dword [ebx + 0xc]
cmp edi, 6
je 0x480f51
mov edx, dword [esi + 0x10]
test byte [edx + 0x3c], 1
je 0x480dd9
mov eax, dword [esi + 0x4c]
test byte [eax], 2
jne 0x480dd9
mov ecx, dword [eax + 0x24]
test ecx, ecx
jge 0x480daa
neg ecx
add ecx, 0xf
and ecx, 0xffffffe0
cmp ecx, 0x10000
jne 0x480e1c
mov ecx, dword [eax + 0x28]
test ecx, ecx
mov edx, ecx
jge 0x480dc3
neg edx
add edx, 0xf
test edx, 0xffffffe0
jne 0x480e1c
test ecx, ecx
jne 0x480e1c
mov ecx, dword [eax + 0x2c]
test ecx, ecx
jne 0x480e1c
cmp edi, 6
je 0x480f51
mov eax, dword [esi + 0x10]
test byte [eax + 0x3c], 1
je 0x480f51
cmp dword [eax + 0xd0], ebp
jl 0x480f51
mov eax, dword [esi + 0x4c]
test byte [eax], 2
jne 0x480f51
mov edx, dword [eax + 0x34]
mov ecx, 0xffff
test ecx, edx
jne 0x480e1c
test dword [eax + 0x38], ecx
je 0x480f51
or byte [eax + 2], 1
mov al, byte [0x72b980]
test al, al
mov ecx, dword [esi + 0x10]
mov edx, dword [ecx + 0xb0]
je 0x480e3e
mov eax, dword [ebx + 0xc]
mov edx, dword [edx + eax*4 + 0x3cc]
jmp 0x480e58
mov al, byte [esi + 0x2c]
test al, al
mov eax, dword [ebx + 0xc]
je 0x480e51
mov edx, dword [edx + eax*4 + 0x394]
jmp 0x480e58
mov edx, dword [edx + eax*4 + 0x378]
mov ecx, dword [esi + 0x4c]
mov dword [ecx + 0x58], edx
mov eax, dword [esi + 0x10]
cmp dword [eax + 0xd0], ebp
jl case.default.0x48064a
mov edx, dword [eax + 0xb0]
mov ecx, dword [ebx + 0xc]
mov eax, dword [esi + 0x4c]
mov ecx, dword [edx + ecx*4 + 0x3b0]
mov dword [eax + 0x58], ecx
mov al, byte [0x72b980]
test al, al
je 0x480e90
emms
emms
mov eax, dword [esi + 0x4c]
fild dword [eax + 0x78]
sub esp, 8
fild dword [eax + 0x68]
fld st(0)
fmul st(1)
fld st(2)
fmul st(3)
faddp st(1)
fstp qword [esp]
fstp st(0)
fstp st(0)
call fcn.00519250
mov eax, dword [esi + 0x4c]
fstp qword [esp + 0x38]
fild dword [eax + 0x7c]
fild dword [eax + 0x6c]
fld st(1)
fmul st(2)
fld st(1)
fmul st(2)
faddp st(1)
fstp qword [esp]
fstp st(0)
fstp st(0)
call fcn.00519250
fstp qword [esp + 0x28]
add esp, 8
fld qword [0x68a830]
fsub qword [esp + 0x30]
fmul qword [0x68a6e0]
fstp qword [esp + 0x28]
fld qword [esp + 0x28]
fistp dword [esp + 0x30]
fld qword [0x68a830]
mov eax, dword [esi + 0x4c]
fsub qword [esp + 0x20]
mov edi, dword [eax + 0x80]
mov edx, dword [esp + 0x30]
sub edi, edx
fmul qword [0x68a6e0]
mov dword [eax + 0x80], edi
fstp qword [esp + 0x28]
fld qword [esp + 0x28]
fistp dword [esp + 0x30]
mov eax, dword [esi + 0x4c]
mov ecx, dword [esp + 0x30]
mov edx, dword [eax + 0x84]
sub edx, ecx
mov dword [eax + 0x84], edx
mov byte [esi + 0x2f], 1
mov dword [esi + 4], 0x80008000
pop edi
pop esi
pop ebp
pop ebx
mov esp, ebp
pop ebp
ret
mov edx, dword [esi + 0x10]
mov eax, dword [edx + 0xb0]
mov edx, dword [eax + edi*4 + 0x35c]
mov ecx, dword [esi + 0x4c]
mov dword [ecx + 0x58], edx
mov edx, dword [esi + 0x4c]
mov eax, dword [edx + 0x54]
test eax, eax
jne 0x480f9f
mov eax, dword [esi + 0x10]
mov ecx, dword [eax + 0xe4]
cmp ecx, 3
jne 0x480f85
cmp dword [eax + 0x40], 2
jge 0x480f9f
mov eax, dword [eax + 0xb0]
mov eax, dword [eax + ecx*4 + 0x338]
test eax, eax
je 0x480f9f
mov ecx, dword [ebx + 0xc]
mov eax, dword [eax + ecx*4]
mov dword [edx + 0x5c], eax
mov ecx, dword [esi + 0x10]
cmp dword [ecx + 0xd0], ebp
jl case.default.0x48064a
mov al, byte [0x72b980]
test al, al
je 0x480fb7
emms
emms
mov eax, dword [esi + 0x4c]
fild dword [eax + 0x78]
sub esp, 8
fild dword [eax + 0x68]
fld st(0)
fmul st(1)
fld st(2)
fmul st(3)
faddp st(1)
fstp qword [esp]
fstp st(0)
fstp st(0)
call fcn.00519250
mov eax, dword [esi + 0x4c]
fstp qword [esp + 0x38]
fild dword [eax + 0x7c]
fild dword [eax + 0x6c]
fld st(0)
fmul st(1)
fld st(2)
fmul st(3)
faddp st(1)
fstp qword [esp]
fstp st(0)
fstp st(0)
call fcn.00519250
fstp qword [esp + 0x28]
add esp, 8
fld qword [esp + 0x30]
fmul qword [0x68a6e0]
fstp qword [esp + 0x28]
fld qword [esp + 0x28]
fistp dword [esp + 0x30]
mov eax, dword [esi + 0x4c]
fld qword [esp + 0x20]
mov edi, dword [eax + 0x80]
fmul qword [0x68a6e0]
mov edx, dword [esp + 0x30]
add edi, edx
fstp qword [esp + 0x28]
mov dword [eax + 0x80], edi
fld qword [esp + 0x28]
fistp dword [esp + 0x30]
mov eax, dword [esi + 0x4c]
mov ecx, dword [esp + 0x30]
mov edx, dword [eax + 0x84]
add edx, ecx
jmp 0x480f38
push 0
mov ecx, esi
call fcn.00472b40
mov dword [esi + 0x30], 0x480240
mov dword [esi + 0x34], 0x47b400
mov byte [esi + 0x2f], 1
mov dword [esi + 4], 0x80008000
pop edi
pop esi
pop ebp
pop ebx
mov esp, ebp
pop ebp
ret
mov al, byte [esi + 0x2c]
test al, al
mov dword [esi + 0x30], 0x480140
jne 0x48109c
mov eax, dword [esi + 0x3c]
test eax, eax
mov eax, fcn.0047b3a0
je 0x4810a1
mov eax, 0x47b4a0
mov edx, dword [esi + 0x4c]
mov dword [esi + 0x34], eax
mov ecx, dword [ebp + 0xb4]
push edx
call fcn.004ced90
mov ecx, dword [esi + 0x4c]
mov dword [ecx + 0x90], eax
mov edx, dword [esi + 0x4c]
mov eax, dword [edx + 0x90]
test eax, eax
jne case.default.0x48064a
pop edi
mov dword [esi + 0x30], 0x480240
mov dword [esi + 0x34], 0x47b400
pop esi
pop ebp
pop ebx
mov esp, ebp
pop ebp
ret