Function at 0x46eb10
Capabilities:
Generate random numbers using a mersenne twister

Disassembly:
inc esp
add byte [esi], cl
add byte [eax], al
add byte [eax], al
add byte [edx], al
add byte [eax], al
add byte [esp + esi*2 + 0x43], ah
add byte [ecx + eax], bh
add byte [eax + 0x73], dl
inc ebx
add byte [eax + 0x69000001], cl
add byte [edi], cl
add byte [ecx], dl
add dword [esi], ecx
adc eax, 0x15011400
add dword [ecx], edi
add byte [0x2c002b00], ch
add byte [eax + eax], dl
inc edi
add byte [esi], al
add eax, 0x20000300
add byte [eax], al
add dword [ecx + eax], eax
add dword [ecx], eax
add eax, 0x12010201
add dword [edi], ebp
add byte [eax], dl
add ch, byte [esi]
add byte [edx], al
add byte [ebx - 0x7bff7e00], al
add byte [ebp + 0x11030f00], al
add ebx, dword [edx]
add byte [0x7001e00], bl
add byte [eax], cl
add byte [0x7b010e01], cl
add byte [edi], dh
mov al, 0x2e
mov al, 5
mov al, 6
mov al, 7
mov al, 0xb
mov al, 0xc
mov al, 0xd
mov al, 0xe
mov al, 0x3b
mov al, 0xf
mov al, 0x10
mov al, 0x11
mov al, 0x19
mov al, 0x22
mov al, 0x1a
mov al, 0x1b
mov al, 0x1c
mov al, 0x24
mov al, 0x35
mov al, 0x25
mov al, 0x26
mov al, 0x27
mov al, 0x2f
mov al, 0
mov ebp, 0xbd02bd01
add al, 0xbd
push es
mov ebp, 0xb033b02c
xor al, 0xb0
cmp byte [eax - 0x4fc54fc7], dh
cmp al, 0xb0
sbb byte [ebx], al
out dx, eax
invalid
jne 0x43f4f6
cmp byte [ecx + 4], 0
je 0x43f4f6
pop esi
or eax, 0xffffffff
pop edi
ret
mov ax, word [edi + 0xa]
mov cx, word [ecx + 0xa]
mov edx, 0x4000
and ax, dx
and cx, dx
cmp ax, cx
je 0x43f51d
xor ecx, ecx
test ax, ax
setne cl
pop esi
pop edi
lea eax, [ecx + ecx - 1]
ret
pop esi
xor eax, eax
pop edi
ret
or byte [eax], cl
or byte [eax], cl
or byte [eax], cl
or byte [eax], cl
or byte [eax], cl
or byte [eax], cl
or byte [eax], cl
or byte [eax], cl
or byte [eax], cl
or byte [eax], cl
or byte [eax], cl
or byte [eax], cl
or byte [eax], cl
or byte [eax], cl
or byte [eax], cl
or byte [eax], cl
or byte [eax], cl
or byte [eax], cl
or byte [eax], cl
or byte [eax], cl
or byte [eax], cl
or byte [edi], al
cmp eax, 0x310040a6
cmpsb byte [esi], byte es:[edi]
inc eax
add byte [ecx - 0x5a], al
inc eax
add byte [eax], al
add al, byte [edx]
add al, byte [edx]
add al, byte [edx]
add al, byte [edx]
add al, byte [edx]
add al, byte [edx]
add al, byte [edx]
add al, byte [ecx]
add dword [ecx], eax
add al, byte [eax]
add al, byte [edx]
add al, byte [edx]
add al, byte [edx]
add al, byte [edx]
add al, byte [edx]
add al, byte [edx]
add al, byte [edx]
add al, byte [edx]
add al, byte [edx]
add al, byte [edx]
add al, byte [edx]
add al, byte [edx]
add al, byte [edx]
add al, byte [edx]
add al, byte [edx]
add al, byte [edx]
add al, byte [edx]
add al, byte [edx]
add al, byte [edx]
add al, byte [edx]
add al, byte [edx]
add al, byte [edx]
add al, byte [edx]
add al, byte [edx]
add al, byte [edx]
add al, byte [edx]
add al, byte [edx]
add al, byte [edx]
add al, byte [edx]
add al, byte [edx]
add al, byte [edx]
add al, byte [edx]
add al, byte [edx]
add al, byte [edx]
add al, byte [edx]
add dword [ecx], eax
add byte [edx], al
add al, byte [edx]
add al, byte [edx]
add al, byte [edx]
add al, byte [edx]
add al, byte [edx]
add al, byte [edx]
add al, byte [edx]
add al, byte [edx]
add al, byte [edx]
add al, byte [edx]
add al, byte [edx]
add al, byte [edx]
add al, byte [edx]
add al, byte [edx]
add al, byte [edx]
add al, byte [edx]
add al, byte [edx]
add al, byte [edx]
add al, byte [edx]
add al, byte [edx]
add al, byte [edx]
add al, byte [edx]
add al, byte [edx]
add al, byte [edx]
add al, byte [eax]
add byte [edx], al
add al, byte [edx]
add al, byte [edx]
add al, byte [edx]
add al, byte [edx]
add al, byte [edx]
add al, byte [edx]
add al, byte [eax]
add byte [eax], al
add byte [eax], al
add ah, cl
int3
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x4c
mov eax, dword [0x49f844]
push ebx
xor ebx, ebx
push esi
mov esi, ecx
push edi
mov dword [esp + 0x38], ebx
mov dword [esp + 0x3c], eax
mov dword [0x49f844], ebx
mov dword [esp + 0x1c], 1
mov dword [esp + 0x30], 0xffffffff
mov byte [esp + 0x12], 0xa
mov byte [0x49f84c], bl
mov byte [0x49f843], bl
mov byte [0x49f842], bl
mov dword [0x49f848], ebx
mov byte [esp + 0x17], bl
mov byte [esp + 0x14], bl
mov byte [esp + 0x15], bl
mov byte [esp + 0x18], bl
mov byte [esp + 0x13], bl
mov byte [esp + 0x16], bl
cmp byte [esi], bl
je 0x46ed03
movsx ecx, byte [esi]
push ecx
call 0x4b1f90
add eax, 0xffffffbd
add esp, 4
cmp eax, 0x19
ja case.default.0x46eb9f
movzx edx, byte [eax + 0x4375c4]
jmp dword [edx*4 + 0x43759c]
inc esi
cmp byte [esi], 0
jne 0x46eb80
mov edx, dword [ebp + 0xc]
mov cl, byte [edx]
test cl, cl
je 0x46f4e8
mov edx, dword [0x4a09d8]
mov al, byte [edx + 0x17]
mov dword [esp + 0x20], edx
test al, al
jne 0x46ed27
mov eax, dword [edx + 0xc]
mov al, byte [eax + 0x17]
cmp al, 2
ja 0x46f4e8
mov ebx, dword [ebp + 0xc]
mov esi, 1
mov dword [esp + 0x1c], esi
mov eax, ebx
lea ecx, [ecx]
cmp cl, byte [esp + 0x12]
jne 0x46ed4a
add dword [esp + 0x1c], esi
mov cl, byte [eax + esi]
add eax, esi
test cl, cl
jne 0x46ed40
mov edi, eax
sub edi, ebx
mov dword [esp + 0x2c], edi
cmp byte [esp + 0x17], cl
jne 0x46ed74
cmp eax, ebx
jbe 0x46ed74
mov cl, byte [eax - 1]
cmp cl, byte [esp + 0x12]
jne 0x46ed74
sub dword [esp + 0x1c], esi
jmp 0x46ed99
cmp byte [esp + 0x12], 0xa
jne 0x46ed9e
push 0xa
push ebx
call 0x4afc01
add esp, 8
test eax, eax
je 0x46ed9e
cmp eax, ebx
jbe 0x46ed9e
cmp byte [eax - 1], 0xd
jne 0x46ed9e
mov byte [esp + 0x15], 1
mov byte [esp + 0x14], 1
cmp dword [esp + 0x1c], esi
jne 0x46edbb
mov ecx, dword [esp + 0x20]
push esi
push 0
push edi
push ebx
call 0x49e8b0
mov dword [esp + 0x1c], eax
jmp 0x46f4e8
cmp dword [0x49f844], 0
jne 0x46edcb
cmp byte [esp + 0x15], 0
je 0x46ee31
lea edx, [edi + 3]
push edx
call 0x4aede3
mov esi, eax
add esp, 4
mov dword [esp + 0x38], esi
test esi, esi
jne 0x46edfd
mov ecx, dword [ebp + 8]
push 0x49588a
push eax
push 0x4918cc
call fcn.004616d0
mov dword [esp + 0x1c], eax
jmp 0x46f4e8
lea eax, [edi + 1]
push eax
push ebx
push esi
call 0x4b3470
add esp, 0xc
cmp byte [esp + 0x15], 0
mov dword [ebp + 0xc], esi
je 0x46ee31
mov cx, word [0x494aac]
mov word [edi + esi], cx
mov dl, byte [0x494aae]
mov byte [edi + esi + 2], dl
add edi, 2
mov dword [esp + 0x2c], edi
mov ecx, dword [esp + 0x1c]
xor eax, eax
cmp byte [esp + 0x13], al
setne al
inc ecx
inc eax
add eax, eax
add eax, eax
imul ecx, eax
push ecx
mov dword [esp + 0x28], eax
call 0x4aede3
mov ebx, eax
add esp, 4
mov dword [esp + 0x34], ebx
test ebx, ebx
jne 0x46ee7a
mov ecx, dword [ebp + 8]
push 0x49588a
push eax
push 0x4918cc
call fcn.004616d0
mov dword [esp + 0x1c], eax
jmp 0x46f4e8
mov esi, dword [ebp + 0xc]
mov dword [ebx], esi
cmp byte [esi], 0
mov edi, ebx
mov dword [esp + 0x1c], 0
mov edx, 1
je 0x46ef09
mov al, byte [esi]
cmp al, byte [esp + 0x12]
jne 0x46ef02
add dword [esp + 0x1c], edx
cmp byte [esp + 0x13], 0
mov byte [esi], 0
je 0x46eef9
sub dword [0x49d318], edx
jne 0x46eebb
call fcn.00449760
mov edx, 1
mov ecx, dword [0x49f984]
mov eax, dword [ecx]
add ecx, 4
mov dword [0x49f984], ecx
mov ecx, eax
shr ecx, 0xb
xor eax, ecx
mov ecx, eax
and ecx, 0xff3a58ad
shl ecx, 7
xor eax, ecx
mov ecx, eax
and ecx, 0xffffdf8c
shl ecx, 0xf
xor eax, ecx
mov ecx, eax
shr ecx, 0x12
xor ecx, eax
shr ecx, 1
mov dword [edi + 4], ecx
add edi, dword [esp + 0x24]
lea eax, [esi + 1]
mov dword [edi], eax
add esi, edx
cmp byte [esi], 0
jne 0x46ee93
cmp byte [esp + 0x14], 0
jne 0x46ef66
add dword [esp + 0x1c], edx
cmp byte [esp + 0x13], 0
je 0x46ef66
sub dword [0x49d318], edx
jne 0x46ef28
call fcn.00449760
mov ecx, dword [0x49f984]
mov eax, dword [ecx]
add ecx, 4
mov dword [0x49f984], ecx
mov ecx, eax
shr ecx, 0xb
xor eax, ecx
mov edx, eax
and edx, 0xff3a58ad
shl edx, 7
xor eax, edx
mov ecx, eax
and ecx, 0xffffdf8c
shl ecx, 0xf
xor eax, ecx
mov edx, eax
shr edx, 0x12
xor edx, eax
shr edx, 1
mov dword [edi + 4], edx
cmp dword [0x49f844], 0
je 0x46ef80
mov eax, dword [esp + 0x24]
mov ecx, dword [esp + 0x1c]
push 0x436970
push eax
push ecx
jmp 0x46efb4
cmp byte [esp + 0x13], 0
je 0x46ef98
mov edx, dword [esp + 0x24]
mov eax, dword [esp + 0x1c]
push 0x436960
push edx
push eax
jmp 0x46efb4
cmp byte [esp + 0x18], 0
mov eax, 0x4368f0
jne 0x46efa9
mov eax, 0x4367c0
mov ecx, dword [esp + 0x24]
mov edx, dword [esp + 0x1c]
push eax
push ecx
push edx
push ebx
call 0x4afe00
mov edx, dword [esp + 0x3c]
mov esi, dword [esp + 0x30]
mov al, byte [esi + 0x17]
add esp, 0x10
mov ebx, edx
mov dword [esp + 0x2c], ebx
test al, al
jne 0x46efe3
mov ecx, dword [esi + 0xc]
push 1
push 0
push edx
push 0
call 0x49e8b0
jmp 0x46f04e
mov byte [esp + 0x13], 1
mov cl, 1
cmp edx, 0xffffffff
jne 0x46efff
mov dword [esp + 0x2c], 0
mov ebx, dword [esp + 0x2c]
xor cl, cl
jmp 0x46f004
mov byte [esp + 0x13], 0
lea edi, [ebx + 1]
cmp al, 2
jne 0x46f032
cmp byte [esp + 0x13], 0
je 0x46f020
push 0x49588a
mov eax, ebx
call fcn.0043bb60
jmp 0x46f04e
mov esi, 0x4a2bfc
call fcn.0043bbe0
neg eax
sbb eax, eax
neg eax
jmp 0x46f04e
cmp edi, dword [0x49d330]
jbe 0x46f060
push 0x49588a
push 0x4958e0
mov ecx, 0x4a2c18
call fcn.00461900
cmp eax, 1
je 0x46f07c
mov dword [esp + 0x1c], 0
jmp 0x46f4e8
cmp edi, 2
jae 0x46f101
xor edx, edx
test cl, cl
setne dl
xor al, al
mov ecx, esi
lea edi, [edx + 3]
call 0x49ed70
mov ecx, dword [esp + 0x20]
mov ebx, dword [esp + 0x34]
xor esi, esi
push 1
mov dword [esp + 0x30], esi
call fcn.00439230
mov edi, eax
mov dword [esp + 0x18], edi
mov dword [esp + 0x28], esi
cmp dword [esp + 0x1c], esi
jbe 0x46f37b
cmp byte [esp + 0x16], 0
je 0x46f3e5
test esi, esi
je 0x46f3e5
cmp byte [0x49f843], 0
je 0x46f3aa
cmp dword [0x49f848], 0
jne 0x46f3aa
mov edi, dword [ebx]
mov eax, edi
call fcn.00444270
test al, al
je 0x46f2f8
push 0x10
push 0
push edi
call 0x4b0a38
mov dword [esp + 0x4c], eax
mov dword [esp + 0x50], edx
fild qword [esp + 0x4c]
add esp, 0xc
jmp 0x46f301
mov al, byte [esi + 0x15]
test al, 2
je 0x46f117
and al, 0x3d
mov byte [esi + 0x15], al
mov eax, dword [esi]
mov ecx, dword [eax]
mov edx, dword [ecx + 8]
push eax
call edx
mov edx, dword [esi + 0x10]
and byte [esi + 0x15], 0x86
cmp edi, edx
jbe 0x46f14d
mov cl, byte [esi + 0x14]
cmp cl, 1
jbe 0x46f180
cmp cl, 2
je 0x46f1b8
mov esi, dword [esp + 0x3c]
mov eax, dword [esp + 0x3c]
mov ecx, dword [esp + 0x20]
and byte [ecx + 0x15], 0x7f
mov dword [ecx + 0x10], esi
mov esi, dword [esp + 0x20]
mov dword [ecx + 8], eax
cmp byte [esp + 0x13], 0
mov eax, dword [esi + 8]
je 0x46f2ed
cmp eax, 0x49588a
je 0x46f171
push ebx
push 0x49588a
push eax
call 0x4af7f0
add esp, 0xc
mov edx, dword [esi + 8]
mov byte [ebx + edx], 0
mov dword [esi + 0xc], ebx
jmp 0x46f07c
cmp edi, 0x40
ja 0x46f1b8
cmp edi, 4
ja 0x46f191
mov esi, 4
jmp 0x46f19f
mov eax, 8
cmp eax, edi
sbb esi, esi
and esi, 0x38
add esi, eax
mov eax, esi
call fcn.00499610
test eax, eax
je 0x46f053
mov ecx, dword [esp + 0x20]
mov byte [ecx + 0x14], 1
jmp 0x46f13f
cmp edi, 0x10
jae 0x46f1c7
mov esi, 0x10
jmp 0x46f277
cmp edi, 0x104
jae 0x46f1d9
mov esi, 0x104
jmp 0x46f277
cmp edi, 0x28000
jae 0x46f21d
mov dword [esp + 0x28], edi
fild dword [esp + 0x28]
test edi, edi
jns 0x46f1f3
fadd qword [0x497ba0]
fmul qword [0x497bb0]
fnstcw word [esp + 0x18]
movzx eax, word [esp + 0x18]
or eax, 0xc00
mov dword [esp + 0x28], eax
fldcw word [esp + 0x28]
fistp qword [esp + 0x50]
mov esi, dword [esp + 0x50]
fldcw word [esp + 0x18]
jmp 0x46f277
cmp edi, 0x190000
jae 0x46f22d
lea esi, [edi + 0x4000]
jmp 0x46f277
cmp edi, 0x640000
jae 0x46f271
mov dword [esp + 0x28], edi
fild dword [esp + 0x28]
test edi, edi
jns 0x46f247
fadd qword [0x497ba0]
fmul qword [0x497ba8]
fnstcw word [esp + 0x18]
movzx eax, word [esp + 0x18]
or eax, 0xc00
mov dword [esp + 0x28], eax
fldcw word [esp + 0x28]
fistp qword [esp + 0x50]
mov esi, dword [esp + 0x50]
fldcw word [esp + 0x18]
jmp 0x46f277
lea esi, [edi + 0x10000]
mov eax, dword [0x49d330]
cmp esi, eax
jbe 0x46f282
mov esi, eax
cmp cl, 2
jne 0x46f2c3
test edx, edx
je 0x46f2c3
mov edi, dword [esp + 0x20]
mov ecx, dword [edi + 8]
push ecx
mov bl, 1
call 0x4b05bf
add esp, 4
cmp esi, 0x7fffffff
ja 0x46f2cb
push esi
call 0x4aede3
add esp, 4
test eax, eax
je 0x46f2cb
mov ecx, dword [esp + 0x20]
mov ebx, dword [esp + 0x2c]
mov byte [edi + 0x14], 2
jmp 0x46f13f
mov edi, dword [esp + 0x20]
xor bl, bl
jmp 0x46f29d
test bl, bl
je 0x46f2de
xor eax, eax
mov dword [edi + 0x10], eax
mov dword [edi + 8], 0x4a2ba4
mov dword [edi + 0xc], eax
push 0x49588a
push 0x4917c0
jmp 0x46f044
mov byte [eax], 0
mov dword [esi + 0xc], ebx
jmp 0x46f07c
push edi
call 0x4b0b3a
add esp, 4
mov eax, esi
fstp qword [esp + 0x50]
call fcn.00444270
test al, al
je 0x46f32b
push 0x10
push 0
push esi
call 0x4b0a38
mov dword [esp + 0x54], eax
mov dword [esp + 0x58], edx
fild qword [esp + 0x54]
add esp, 0xc
jmp 0x46f334
push esi
call 0x4b0b3a
add esp, 4
fld qword [esp + 0x50]
fucompp
fnstsw ax
test ah, 0x44
jp 0x46f3e5
mov edi, dword [esp + 0x18]
mov eax, dword [esp + 0x1c]
inc dword [esp + 0x2c]
dec eax
cmp dword [esp + 0x28], eax
jne 0x46f364
cmp byte [esp + 0x14], 0
jne 0x46f364
dec edi
mov dword [esp + 0x18], edi
mov eax, dword [esp + 0x28]
add ebx, dword [esp + 0x24]
inc eax
mov dword [esp + 0x28], eax
cmp eax, dword [esp + 0x1c]
jb 0x46f0a5
mov eax, dword [esp + 0x34]
push eax
call 0x4b05bf
add esp, 4
cmp byte [esp + 0x15], 0
je 0x46f44b
mov byte [edi - 2], 0
mov edi, dword [esp + 0x20]
cmp byte [edi + 0x17], 0
jne 0x46f423
mov esi, dword [edi + 0xc]
jmp 0x46f425
mov al, byte [0x49f84c]
push esi
test al, al
jne 0x46f3be
mov eax, dword [ebx]
push eax
call 0x4aecb6
jmp 0x46f3d5
cmp al, 2
jne 0x46f3cd
mov ecx, dword [ebx]
push ecx
call dword [fcn.0048d2b4]
jmp 0x46f3d8
mov eax, dword [ebx]
push eax
call 0x4aedcc
add esp, 8
test eax, eax
setne al
test al, al
je 0x46f349
mov ecx, dword [ebx]
mov al, byte [ecx]
mov edi, dword [esp + 0x18]
test al, al
je 0x46f3ff
inc ecx
mov byte [edi], al
mov al, byte [ecx]
inc edi
test al, al
jne 0x46f3f1
mov dword [esp + 0x18], edi
mov eax, dword [esp + 0x1c]
dec eax
cmp dword [esp + 0x28], eax
jb 0x46f411
cmp byte [esp + 0x14], 0
je 0x46f41c
mov dl, byte [esp + 0x12]
mov byte [edi], dl
inc edi
mov dword [esp + 0x18], edi
mov esi, dword [ebx]
jmp 0x46f364
mov esi, edi
cmp byte [esi + 0x17], 1
jne 0x46f441
test byte [esi + 0x15], 8
je 0x46f438
mov eax, esi
call fcn.00439150
add dword [esi + 0xc], 0xfffffffe
lea eax, [esi + 0xc]
jmp 0x46f452
mov eax, 0x4a3324
add dword [eax], 0xfffffffe
jmp 0x46f452
mov byte [edi], 0
mov edi, dword [esp + 0x20]
cmp byte [esp + 0x16], 0
je 0x46f4ae
cmp dword [esp + 0x2c], 0
je 0x46f4ae
push 1
mov ecx, edi
call fcn.00439230
lea edx, [eax + 1]
lea esp, [esp]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x46f470
sub eax, edx
mov ebx, eax
cmp byte [edi + 0x17], cl
jne 0x46f485
mov esi, dword [edi + 0xc]
jmp 0x46f487
mov esi, edi
cmp byte [esi + 0x17], 1
jne 0x46f49f
test byte [esi + 0x15], 8
je 0x46f49a
mov eax, esi
call fcn.00439150
lea eax, [esi + 0xc]
jmp 0x46f4a4
mov eax, 0x4a3324
mov ecx, dword [esp + 0x2c]
mov dword [eax], ebx
mov dword [esp + 0x30], ecx
cmp byte [edi + 0x17], 0
jne 0x46f4b9
mov eax, dword [edi + 0xc]
jmp 0x46f4bb
mov eax, edi
cmp byte [eax + 0x17], 2
jne 0x46f4dc
cmp dword [0x4a2c08], 0
je 0x46f4dc
push 1
mov ecx, 0x4a2bfc
call fcn.0043bc50
mov dword [esp + 0x1c], eax
jmp 0x46f4e8
and byte [eax + 0x15], 0x86
mov dword [esp + 0x1c], 1
mov edi, dword [esp + 0x30]
cmp edi, 0xffffffff
je 0x46f55d
mov esi, dword [0x4a13a4]
cmp byte [esi + 0x17], 0
jne 0x46f500
mov esi, dword [esi + 0xc]
mov al, byte [esi + 0x15]
test al, 2
je 0x46f516
and al, 0x3d
mov byte [esi + 0x15], al
mov eax, dword [esi]
mov edx, dword [eax]
push eax
mov eax, dword [edx + 8]
call eax
mov al, byte [esi + 0x15]
and al, 0x9f
or al, 0x18
mov dword [esi], edi
mov dword [esi + 4], 0
mov byte [esi + 0x15], al
jns 0x46f538
mov eax, esi
call fcn.00439150
and byte [esi + 0x15], 0x8f
jmp 0x46f55d
cmp dword [0x4a0b84], 0
je 0x46f545
test al, 0x10
jne 0x46f552
cmp dword [0x4a0b88], 0
je 0x46f55d
test al, 0x20
je 0x46f55d
test al, 8
je 0x46f55d
mov eax, esi
call fcn.00439150
mov eax, dword [esp + 0x38]
test eax, eax
je 0x46f585
push eax
call 0x4b05bf
mov ecx, dword [esp + 0x40]
mov eax, dword [esp + 0x20]
add esp, 4
mov dword [0x49f844], ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 8
mov edx, dword [esp + 0x3c]
mov eax, dword [esp + 0x1c]
pop edi
pop esi
mov dword [0x49f844], edx
pop ebx
mov esp, ebp
pop ebp
ret 8