Function at 0x403eb0
Capabilities:
Compress data via zlib inflate or deflate

Disassembly:
push ebp
mov ebp, esp
sub esp, 0xc
push ebx
push edi
mov edi, dword [ebp + 8]
test edi, edi
je 0x4048df
cmp dword [edi + 0x20], 0
je 0x4048df
cmp dword [edi + 0x24], 0
je 0x4048df
mov eax, dword [edi + 0x1c]
test eax, eax
je 0x4048df
cmp dword [eax], edi
jne 0x4048df
mov eax, dword [eax + 4]
cmp eax, 0x2a
je 0x403f1b
cmp eax, 0x39
je 0x403f1b
cmp eax, 0x45
je 0x403f1b
cmp eax, 0x49
je 0x403f1b
cmp eax, 0x5b
je 0x403f1b
cmp eax, 0x67
je 0x403f1b
cmp eax, 0x71
je 0x403f1b
cmp eax, 0x29a
jne 0x4048df
mov ebx, dword [ebp + 0xc]
cmp ebx, 5
ja 0x4048df
cmp dword [edi + 0xc], 0
push esi
mov esi, dword [edi + 0x1c]
je 0x4048cb
cmp dword [edi + 4], 0
je 0x403f44
cmp dword [edi], 0
je 0x4048cb
cmp dword [esi + 4], 0x29a
jne 0x403f56
cmp ebx, 4
jne 0x4048cb
cmp dword [edi + 0x10], 0
je 0x403fcd
cmp dword [esi + 0x14], 0
mov edx, dword [esi + 0x28]
mov dword [esi + 0x28], ebx
je 0x403f87
push edi
call fcn.00405590
add esp, 4
cmp dword [edi + 0x10], 0
jne 0x403fb9
mov dword [esi + 0x28], 0xffffffff
pop esi
pop edi
xor eax, eax
pop ebx
mov esp, ebp
pop ebp
ret
cmp dword [edi + 4], 0
jne 0x403fb9
xor eax, eax
mov ecx, 9
cmp edx, 4
cmovg eax, ecx
add edx, edx
sub edx, eax
xor ecx, ecx
cmp ebx, 4
mov eax, 9
cmovg ecx, eax
lea eax, [ebx + ebx]
sub eax, ecx
cmp eax, edx
jg 0x403fb9
cmp ebx, 4
jne 0x403fcd
mov eax, dword [esi + 4]
cmp eax, 0x29a
jne 0x403fe1
cmp dword [edi + 4], 0
je 0x4040bf
mov eax, dword [str.buffer_error]
pop esi
mov dword [edi + 0x18], eax
mov eax, 0xfffffffb
pop edi
pop ebx
mov esp, ebp
pop ebp
ret
cmp eax, 0x2a
jne 0x4040bf
cmp dword [esi + 0x18], 0
jne 0x403ffc
mov dword [esi + 4], 0x71
jmp 0x4040bf
mov ecx, dword [esi + 0x30]
shl ecx, 0xc
sub ecx, 0x7800
cmp dword [esi + 0x88], 2
mov dword [ebp + 8], ecx
jge 0x404044
mov eax, dword [esi + 0x84]
cmp eax, 2
jl 0x404044
cmp eax, 6
jge 0x40402e
mov eax, 0x40
lea edx, [eax + 0x20]
jmp 0x404049
jne 0x40403a
mov eax, pe_nt_image_headers32
lea edx, [eax + 0x20]
jmp 0x404049
mov eax, 0xc0
lea edx, [eax + 0x20]
jmp 0x404049
xor eax, eax
lea edx, [eax + 0x20]
or ecx, eax
cmp dword [esi + 0x6c], 0
je 0x404056
mov ecx, edx
or ecx, dword [ebp + 8]
mov eax, 0x8421085
mul ecx
sub ecx, edx
shr ecx, 1
add ecx, edx
shr ecx, 4
inc ecx
mov eax, ecx
shl eax, 5
sub eax, ecx
push eax
push esi
call fcn.00405760
add esp, 8
cmp dword [esi + 0x6c], 0
je 0x404097
movzx eax, word [edi + 0x32]
push eax
push esi
call fcn.00405760
movzx eax, word [edi + 0x30]
push eax
push esi
call fcn.00405760
add esp, 0x10
push 0
push 0
push 0
call fcn.00402900
mov dword [edi + 0x30], eax
push edi
mov dword [esi + 4], 0x71
call fcn.00405590
add esp, 0x10
cmp dword [esi + 0x14], 0
jne 0x403f77
cmp dword [esi + 4], 0x39
jne 0x4042e4
push 0
push 0
push 0
call fcn.00402c80
mov dword [edi + 0x30], eax
add esp, 0xc
mov ecx, dword [esi + 0x14]
mov eax, dword [esi + 8]
mov byte [ecx + eax], 0x1f
mov ecx, dword [esi + 0x14]
mov eax, dword [esi + 8]
inc ecx
mov dword [esi + 0x14], ecx
mov byte [ecx + eax], 0x8b
mov ecx, dword [esi + 0x14]
mov eax, dword [esi + 8]
inc ecx
mov dword [esi + 0x14], ecx
mov byte [ecx + eax], 8
mov edx, dword [esi + 0x14]
mov eax, dword [esi + 0x1c]
inc edx
mov dword [esi + 0x14], edx
test eax, eax
jne 0x4041b1
mov eax, dword [esi + 8]
mov byte [edx + eax], 0
mov ecx, dword [esi + 0x14]
mov eax, dword [esi + 8]
inc ecx
mov dword [esi + 0x14], ecx
mov byte [ecx + eax], 0
mov ecx, dword [esi + 0x14]
mov eax, dword [esi + 8]
inc ecx
mov dword [esi + 0x14], ecx
mov byte [ecx + eax], 0
mov ecx, dword [esi + 0x14]
mov eax, dword [esi + 8]
inc ecx
mov dword [esi + 0x14], ecx
mov byte [ecx + eax], 0
mov ecx, dword [esi + 0x14]
mov eax, dword [esi + 8]
inc ecx
mov dword [esi + 0x14], ecx
mov byte [ecx + eax], 0
mov edx, dword [esi + 0x14]
mov eax, dword [esi + 0x84]
inc edx
mov dword [esi + 0x14], edx
cmp eax, 9
jne 0x404167
mov cl, 2
jmp 0x40417b
cmp dword [esi + 0x88], 2
jge 0x404179
cmp eax, 2
jl 0x404179
xor cl, cl
jmp 0x40417b
mov cl, 4
mov eax, dword [esi + 8]
push edi
mov byte [edx + eax], cl
mov ecx, dword [esi + 0x14]
mov eax, dword [esi + 8]
inc ecx
mov dword [esi + 0x14], ecx
mov byte [ecx + eax], 0xa
inc dword [esi + 0x14]
mov dword [esi + 4], 0x71
call fcn.00405590
add esp, 4
cmp dword [esi + 0x14], 0
jne 0x403f77
jmp 0x4042e4
mov ecx, dword [eax + 0x24]
mov eax, dword [eax + 0x2c]
neg ecx
sbb cl, cl
and cl, 0x10
neg eax
sbb al, al
and al, 2
add cl, al
mov eax, dword [esi + 0x1c]
mov eax, dword [eax + 0x1c]
neg eax
sbb al, al
and al, 8
add cl, al
mov eax, dword [esi + 0x1c]
mov eax, dword [eax + 0x10]
neg eax
sbb al, al
and al, 4
add cl, al
mov eax, dword [esi + 0x1c]
cmp dword [eax], 0
setne al
add cl, al
mov eax, dword [esi + 8]
mov byte [edx + eax], cl
mov edx, dword [esi + 0x14]
mov eax, dword [esi + 0x1c]
inc edx
mov ecx, dword [esi + 8]
mov dword [esi + 0x14], edx
movzx eax, byte [eax + 4]
mov byte [edx + ecx], al
mov edx, dword [esi + 0x14]
mov eax, dword [esi + 0x1c]
inc edx
mov ecx, dword [esi + 8]
mov dword [esi + 0x14], edx
movzx eax, byte [eax + 5]
mov byte [edx + ecx], al
mov edx, dword [esi + 0x14]
mov eax, dword [esi + 0x1c]
inc edx
mov ecx, dword [esi + 8]
mov dword [esi + 0x14], edx
movzx eax, byte [eax + 6]
mov byte [edx + ecx], al
mov edx, dword [esi + 0x14]
mov eax, dword [esi + 0x1c]
inc edx
mov ecx, dword [esi + 8]
mov dword [esi + 0x14], edx
movzx eax, byte [eax + 7]
mov byte [edx + ecx], al
mov edx, dword [esi + 0x14]
mov eax, dword [esi + 0x84]
inc edx
mov dword [esi + 0x14], edx
cmp eax, 9
jne 0x404259
mov cl, 2
jmp 0x40426d
cmp dword [esi + 0x88], 2
jge 0x40426b
cmp eax, 2
jl 0x40426b
xor cl, cl
jmp 0x40426d
mov cl, 4
mov eax, dword [esi + 8]
mov byte [edx + eax], cl
mov edx, dword [esi + 0x14]
mov eax, dword [esi + 0x1c]
inc edx
mov ecx, dword [esi + 8]
mov dword [esi + 0x14], edx
mov al, byte [eax + 0xc]
mov byte [edx + ecx], al
mov edx, dword [esi + 0x14]
mov eax, dword [esi + 0x1c]
inc edx
mov dword [esi + 0x14], edx
cmp dword [eax + 0x10], 0
je 0x4042bb
mov ecx, dword [esi + 8]
movzx eax, byte [eax + 0x14]
mov byte [edx + ecx], al
mov edx, dword [esi + 0x14]
mov eax, dword [esi + 0x1c]
inc edx
mov ecx, dword [esi + 8]
mov dword [esi + 0x14], edx
movzx eax, byte [eax + 0x15]
mov byte [edx + ecx], al
mov edx, dword [esi + 0x14]
inc edx
mov dword [esi + 0x14], edx
mov eax, dword [esi + 0x1c]
cmp dword [eax + 0x2c], 0
je 0x4042d6
push edx
push dword [esi + 8]
push dword [edi + 0x30]
call fcn.00402c80
add esp, 0xc
mov dword [edi + 0x30], eax
mov dword [esi + 0x20], 0
mov dword [esi + 4], 0x45
mov eax, dword [esi + 4]
cmp eax, 0x45
jne 0x404439
mov eax, dword [esi + 0x1c]
cmp dword [eax + 0x10], 0
je 0x404430
movzx edx, word [eax + 0x14]
mov ecx, dword [esi + 0x14]
sub edx, dword [esi + 0x20]
mov ebx, dword [esi + 0xc]
mov dword [ebp - 4], ecx
mov dword [ebp + 8], edx
lea eax, [ecx + edx]
mov dword [ebp - 8], ecx
cmp eax, ebx
jbe 0x4043df
nop
mov eax, dword [esi + 0x1c]
sub ebx, ecx
push ebx
mov dword [ebp - 0xc], ebx
mov eax, dword [eax + 0x10]
add eax, dword [esi + 0x20]
push eax
mov eax, dword [esi + 8]
add eax, ecx
push eax
call fcn.00415730
mov eax, dword [esi + 0x1c]
add esp, 0xc
mov edx, dword [esi + 0xc]
mov dword [esi + 0x14], edx
cmp dword [eax + 0x2c], 0
je 0x40436b
mov ecx, dword [ebp - 4]
cmp edx, ecx
jbe 0x40436b
mov eax, dword [esi + 8]
sub edx, ecx
push edx
add eax, ecx
push eax
push dword [edi + 0x30]
call fcn.00402c80
add esp, 0xc
mov dword [edi + 0x30], eax
add dword [esi + 0x20], ebx
mov ebx, dword [edi + 0x1c]
push ebx
mov dword [ebp - 4], ebx
call fcn.00407ef0
mov eax, dword [ebx + 0x14]
add esp, 4
mov ebx, dword [edi + 0x10]
cmp eax, ebx
cmovbe ebx, eax
test ebx, ebx
je 0x4043b8
mov eax, dword [ebp - 4]
push ebx
push dword [eax + 0x10]
push dword [edi + 0xc]
call fcn.00415730
mov ecx, dword [ebp - 4]
add esp, 0xc
add dword [edi + 0xc], ebx
add dword [ecx + 0x10], ebx
add dword [edi + 0x14], ebx
sub dword [edi + 0x10], ebx
sub dword [ecx + 0x14], ebx
jne 0x4043b8
mov eax, dword [ecx + 8]
mov dword [ecx + 0x10], eax
mov eax, dword [esi + 0x14]
mov dword [ebp - 8], eax
test eax, eax
jne 0x403f77
mov edx, dword [ebp + 8]
xor ecx, ecx
sub edx, dword [ebp - 0xc]
mov ebx, dword [esi + 0xc]
mov dword [ebp - 4], eax
mov dword [ebp + 8], edx
cmp edx, ebx
ja 0x404320
mov eax, dword [esi + 0x1c]
push edx
mov eax, dword [eax + 0x10]
add eax, dword [esi + 0x20]
push eax
mov eax, dword [esi + 8]
add eax, dword [ebp - 8]
push eax
call fcn.00415730
mov edx, dword [esi + 0x14]
add esp, 0xc
mov eax, dword [esi + 0x1c]
add edx, dword [ebp + 8]
mov dword [esi + 0x14], edx
cmp dword [eax + 0x2c], 0
je 0x404429
mov ecx, dword [ebp - 4]
cmp edx, ecx
jbe 0x404429
mov eax, dword [esi + 8]
sub edx, ecx
push edx
add eax, ecx
push eax
push dword [edi + 0x30]
call fcn.00402c80
add esp, 0xc
mov dword [edi + 0x30], eax
mov dword [esi + 0x20], 0
mov dword [esi + 4], 0x49
jmp 0x404442
cmp eax, 0x49
jne 0x404543
mov eax, dword [esi + 0x1c]
cmp dword [eax + 0x1c], 0
je 0x40453a
mov ecx, dword [esi + 0x14]
mov ebx, ecx
mov dword [ebp + 8], ecx
cmp ebx, dword [esi + 0xc]
jne 0x4044e1
mov eax, dword [esi + 0x1c]
cmp dword [eax + 0x2c], 0
je 0x404484
cmp ebx, ecx
jbe 0x404484
mov eax, dword [esi + 8]
sub ebx, ecx
push ebx
add eax, ecx
push eax
push dword [edi + 0x30]
call fcn.00402c80
add esp, 0xc
mov dword [edi + 0x30], eax
mov ebx, dword [edi + 0x1c]
push ebx
mov dword [ebp + 8], ebx
call fcn.00407ef0
mov eax, dword [ebx + 0x14]
add esp, 4
mov ebx, dword [edi + 0x10]
cmp eax, ebx
cmovbe ebx, eax
test ebx, ebx
je 0x4044ce
mov eax, dword [ebp + 8]
push ebx
push dword [eax + 0x10]
push dword [edi + 0xc]
call fcn.00415730
mov ecx, dword [ebp + 8]
add esp, 0xc
add dword [edi + 0xc], ebx
add dword [ecx + 0x10], ebx
add dword [edi + 0x14], ebx
sub dword [edi + 0x10], ebx
sub dword [ecx + 0x14], ebx
jne 0x4044ce
mov eax, dword [ecx + 8]
mov dword [ecx + 0x10], eax
cmp dword [esi + 0x14], 0
jne 0x403f77
mov dword [ebp + 8], 0
xor ebx, ebx
mov eax, dword [esi + 0x1c]
mov ecx, dword [esi + 0x20]
mov eax, dword [eax + 0x1c]
mov dl, byte [ecx + eax]
lea eax, [ecx + 1]
mov dword [esi + 0x20], eax
mov eax, dword [esi + 8]
mov byte [ebx + eax], dl
mov ebx, dword [esi + 0x14]
inc ebx
mov dword [esi + 0x14], ebx
test dl, dl
je 0x40450c
mov ecx, dword [ebp + 8]
jmp 0x404457
mov eax, dword [esi + 0x1c]
cmp dword [eax + 0x2c], 0
je 0x404533
mov ecx, dword [ebp + 8]
cmp ebx, ecx
jbe 0x404533
mov eax, dword [esi + 8]
sub ebx, ecx
push ebx
add eax, ecx
push eax
push dword [edi + 0x30]
call fcn.00402c80
add esp, 0xc
mov dword [edi + 0x30], eax
mov dword [esi + 0x20], 0
mov dword [esi + 4], 0x5b
jmp 0x40454c
cmp eax, 0x5b
jne 0x404649
mov eax, dword [esi + 0x1c]
cmp dword [eax + 0x24], 0
je 0x40463d
mov ecx, dword [esi + 0x14]
mov ebx, ecx
mov dword [ebp + 8], ecx
cmp ebx, dword [esi + 0xc]
jne 0x4045eb
mov eax, dword [esi + 0x1c]
cmp dword [eax + 0x2c], 0
je 0x40458e
cmp ebx, ecx
jbe 0x40458e
mov eax, dword [esi + 8]
sub ebx, ecx
push ebx
add eax, ecx
push eax
push dword [edi + 0x30]
call fcn.00402c80
add esp, 0xc
mov dword [edi + 0x30], eax
mov ebx, dword [edi + 0x1c]
push ebx
mov dword [ebp + 8], ebx
call fcn.00407ef0
mov eax, dword [ebx + 0x14]
add esp, 4
mov ebx, dword [edi + 0x10]
cmp eax, ebx
cmovbe ebx, eax
test ebx, ebx
je 0x4045d8
mov eax, dword [ebp + 8]
push ebx
push dword [eax + 0x10]
push dword [edi + 0xc]
call fcn.00415730
mov ecx, dword [ebp + 8]
add esp, 0xc
add dword [edi + 0xc], ebx
add dword [ecx + 0x10], ebx
add dword [edi + 0x14], ebx
sub dword [edi + 0x10], ebx
sub dword [ecx + 0x14], ebx
jne 0x4045d8
mov eax, dword [ecx + 8]
mov dword [ecx + 0x10], eax
cmp dword [esi + 0x14], 0
jne 0x403f77
mov dword [ebp + 8], 0
xor ebx, ebx
mov eax, dword [esi + 0x1c]
mov ecx, dword [esi + 0x20]
mov eax, dword [eax + 0x24]
mov dl, byte [ecx + eax]
lea eax, [ecx + 1]
mov dword [esi + 0x20], eax
mov eax, dword [esi + 8]
mov byte [ebx + eax], dl
mov ebx, dword [esi + 0x14]
inc ebx
mov dword [esi + 0x14], ebx
test dl, dl
je 0x404616
mov ecx, dword [ebp + 8]
jmp 0x404561
mov eax, dword [esi + 0x1c]
cmp dword [eax + 0x2c], 0
je 0x40463d
mov ecx, dword [ebp + 8]
cmp ebx, ecx
jbe 0x40463d
mov eax, dword [esi + 8]
sub ebx, ecx
push ebx
add eax, ecx
push eax
push dword [edi + 0x30]
call fcn.00402c80
add esp, 0xc
mov dword [edi + 0x30], eax
mov ebx, dword [ebp + 0xc]
mov dword [esi + 4], 0x67
jmp 0x40464e
cmp eax, 0x67
jne 0x4046bf
mov eax, dword [esi + 0x1c]
cmp dword [eax + 0x2c], 0
je 0x4046a5
mov edx, dword [esi + 0x14]
lea eax, [edx + 2]
cmp eax, dword [esi + 0xc]
jbe 0x404676
push edi
call fcn.00405590
mov edx, dword [esi + 0x14]
add esp, 4
test edx, edx
jne 0x403f77
mov ecx, dword [esi + 8]
movzx eax, byte [edi + 0x30]
push 0
push 0
mov byte [edx + ecx], al
mov edx, dword [esi + 0x14]
mov ecx, dword [esi + 8]
inc edx
mov dword [esi + 0x14], edx
movzx eax, byte [edi + 0x31]
push 0
mov byte [edx + ecx], al
inc dword [esi + 0x14]
call fcn.00402c80
add esp, 0xc
mov dword [edi + 0x30], eax
push edi
mov dword [esi + 4], 0x71
call fcn.00405590
add esp, 4
cmp dword [esi + 0x14], 0
jne 0x403f77
cmp dword [edi + 4], 0
jne 0x4046e0
cmp dword [esi + 0x74], 0
jne 0x4046e0
test ebx, ebx
je 0x403f7e
cmp dword [esi + 4], 0x29a
je 0x4047c8
mov eax, dword [esi + 0x84]
push ebx
push esi
test eax, eax
jne 0x4046f3
call fcn.004030a0
jmp 0x40471d
mov ecx, dword [esi + 0x88]
cmp ecx, 2
jne 0x404705
call fcn.00404e10
jmp 0x40471d
cmp ecx, 3
jne 0x404711
call fcn.00405020
jmp 0x40471d
lea eax, [eax + eax*2]
mov eax, dword [eax*4 + 0x432950]
call eax
add esp, 8
cmp eax, 2
je 0x40472a
cmp eax, 3
jne 0x404731
mov dword [esi + 4], 0x29a
test eax, eax
je 0x4048b1
cmp eax, 2
je 0x4048b1
cmp eax, 1
jne 0x4047c8
cmp ebx, eax
jne 0x40475a
push esi
call fcn.00407e10
add esp, 4
jmp 0x4047b5
cmp ebx, 5
je 0x4047b5
push 0
push 0
push 0
push esi
call fcn.00408380
add esp, 0x10
cmp ebx, 3
jne 0x4047b5
mov eax, dword [esi + 0x44]
xor edx, edx
mov ecx, dword [esi + 0x4c]
mov word [eax + ecx*2 - 2], dx
mov eax, dword [esi + 0x4c]
lea eax, [eax*2 - 2]
push eax
push edx
push dword [esi + 0x44]
call fcn.00415cb0
add esp, 0xc
cmp dword [esi + 0x74], 0
jne 0x4047b5
mov dword [esi + 0x6c], 0
mov dword [esi + 0x5c], 0
mov dword [esi + 0x16b4], 0
push edi
call fcn.00405590
add esp, 4
cmp dword [edi + 0x10], 0
je 0x403f77
cmp ebx, 4
jne 0x403f7e
mov eax, dword [esi + 0x18]
test eax, eax
jg 0x4047e2
pop esi
pop edi
lea eax, [ebx - 3]
pop ebx
mov esp, ebp
pop ebp
ret
cmp eax, 2
jne 0x404874
mov edx, dword [esi + 0x14]
movzx eax, byte [edi + 0x30]
mov ecx, dword [esi + 8]
mov byte [edx + ecx], al
mov edx, dword [esi + 0x14]
mov ecx, dword [esi + 8]
inc edx
mov dword [esi + 0x14], edx
movzx eax, byte [edi + 0x31]
mov byte [edx + ecx], al
mov edx, dword [esi + 0x14]
mov ecx, dword [esi + 8]
inc edx
mov dword [esi + 0x14], edx
movzx eax, byte [edi + 0x32]
mov byte [edx + ecx], al
mov edx, dword [esi + 0x14]
mov ecx, dword [esi + 8]
inc edx
mov dword [esi + 0x14], edx
movzx eax, byte [edi + 0x33]
mov byte [edx + ecx], al
mov edx, dword [esi + 0x14]
mov ecx, dword [esi + 8]
inc edx
mov dword [esi + 0x14], edx
movzx eax, byte [edi + 8]
mov byte [edx + ecx], al
mov edx, dword [esi + 0x14]
mov ecx, dword [esi + 8]
inc edx
mov dword [esi + 0x14], edx
movzx eax, byte [edi + 9]
mov byte [edx + ecx], al
mov edx, dword [esi + 0x14]
mov ecx, dword [esi + 8]
inc edx
mov dword [esi + 0x14], edx
movzx eax, byte [edi + 0xa]
mov byte [edx + ecx], al
mov edx, dword [esi + 0x14]
mov ecx, dword [esi + 8]
inc edx
mov dword [esi + 0x14], edx
movzx eax, byte [edi + 0xb]
mov byte [edx + ecx], al
inc dword [esi + 0x14]
jmp 0x40488d
movzx eax, word [edi + 0x32]
push eax
push esi
call fcn.00405760
movzx eax, word [edi + 0x30]
push eax
push esi
call fcn.00405760
add esp, 0x10
push edi
call fcn.00405590
mov eax, dword [esi + 0x18]
add esp, 4
test eax, eax
jle 0x4048a2
neg eax
mov dword [esi + 0x18], eax
xor eax, eax
cmp dword [esi + 0x14], eax
pop esi
pop edi
sete al
pop ebx
mov esp, ebp
pop ebp
ret
cmp dword [edi + 0x10], 0
jne 0x403f7e
mov dword [esi + 0x28], 0xffffffff
xor eax, eax
pop esi
pop edi
pop ebx
mov esp, ebp
pop ebp
ret
mov eax, dword [str.stream_error]
pop esi
mov dword [edi + 0x18], eax
mov eax, 0xfffffffe
pop edi
pop ebx
mov esp, ebp
pop ebp
ret
pop edi
mov eax, 0xfffffffe
pop ebx
mov esp, ebp
pop ebp
ret