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

Disassembly:
mov eax, 0x1368
call fcn.004012c0
or dword [esp + 0x14], 0xffffffff
push ebx
push ebp
push esi
xor esi, esi
push edi
push 0x40
lea ecx, [esp + 0x48]
mov dword [esp + 0x3c], esi
mov dword [esp + 0x14], esi
mov dword [esp + 0x2c], esi
mov dword [esp + 0x24], esi
mov dword [esp + 0x34], esi
mov dword [esp + 0x38], esi
mov dword [esp + 0x40], esi
mov dword [esp + 0x44], esi
mov dword [esp + 0x64], esi
mov dword [esp + 0x1c], esi
call fcn.00401eb1
lea ecx, [esp + 0x198]
call fcn.0040bd78
lea ecx, [esp + 0xa0]
mov dword [esp + 0x54], esi
mov dword [esp + 0x58], esi
mov dword [esp + 0x5c], esi
call fcn.0040bd78
mov eax, dword [esp + 0x44]
mov dword [0x410550], eax
mov dword [0x40f908], 1
mov ebx, 0x420684
xor esi, esi
cmp dword [0x4237e0], esi
jne 0x402c7e
xor edi, edi
mov dword [esp + 0x1c], esi
inc edi
mov ebp, 0x40f93c
mov eax, dword [esp + 0x1c]
cmp eax, 0x40
jl 0x4020be
cmp byte [0x421704], 0
je 0x4023a7
cmp eax, dword [esp + 0x48]
jl 0x4020d3
mov eax, dword [esp + 0x1c]
inc eax
push eax
lea ecx, [esp + 0x48]
call fcn.00401f92
mov eax, dword [esp + 0x44]
push 4
add eax, esi
push ebp
mov dword [0x410550], eax
call fcn.00403c5f
test eax, eax
je 0x40231e
push 4
push 0x4205ad
push ebp
call fcn.00408e12
test eax, eax
jne 0x402328
call fcn.00408180
test eax, eax
jne 0x402387
movzx eax, word [0x4205e4]
push eax
movzx eax, word [0x420600]
push 2
push eax
call fcn.0040401d
test eax, eax
je 0x40213d
cmp eax, dword [esp + 0x10]
jle 0x402135
mov dword [esp + 0x10], eax
cmp eax, edi
jg 0x40238d
movzx eax, word [0x420602]
push 0
push 3
push eax
call fcn.0040401d
test eax, eax
je 0x402164
cmp eax, dword [esp + 0x10]
jle 0x40215c
mov dword [esp + 0x10], eax
cmp eax, edi
jg 0x40238d
movzx eax, word [0x420602]
push 0x4205e6
push eax
push dword [0x4205a0]
call fcn.0040bfcf
movzx eax, word [0x420604]
push 0
push 0
push eax
call fcn.0040401d
test eax, eax
je 0x4021a3
cmp eax, dword [esp + 0x10]
jle 0x40219b
mov dword [esp + 0x10], eax
cmp eax, edi
jg 0x40238d
test byte [0x42060c], 0x10
je 0x4021d2
movzx eax, byte [0x4205e1]
test eax, eax
je 0x4021bc
cmp eax, 0xb
jne 0x4021d2
push ebx
call fcn.00406f5e
cmp byte [eax], 0x5c
je 0x4021d2
push 0x40d28c
push ebx
call fcn.00408eb7
lea ecx, [esp + 0x690]
call fcn.00401fc7
push 0xce8
push 0
lea eax, [esp + 0x698]
push eax
call fcn.00408baf
push ebx
lea eax, [esp + 0x6c4]
push eax
call fcn.00408d4c
movzx eax, word [0x4205ea]
movzx ecx, word [0x4205e8]
shl eax, 0x10
or eax, ecx
mov dword [esp + 0x6ac], eax
mov eax, dword [0x4205f8]
mov dword [esp + 0x1370], eax
mov eax, dword [0x4205fc]
mov dword [esp + 0x1374], eax
mov eax, dword [0x4205e4]
shr eax, 0xb
test al, 1
je 0x40228a
mov eax, 0x200
or word [esp + 0x698], ax
push 0x400
lea eax, [esp + 0xac4]
push eax
push ebx
call fcn.0040c483
xor eax, eax
mov word [esp + 0x12be], ax
push 0x3ff
lea eax, [esp + 0x6c4]
push eax
lea eax, [esp + 0xac8]
push eax
call fcn.0040c42d
mov byte [esp + 0xabf], 0
push 4
push 0
lea eax, [esp + 0x698]
push eax
mov ecx, 0x4240b8
call fcn.004014ae
test eax, eax
setne byte [esp + 0x17]
cmp byte [0x420684], 0
je 0x4022da
cmp byte [0x420685], 0
je 0x4022da
cmp byte [0x420686], 0
mov eax, 0x420686
je 0x4022da
cmp byte [eax], 0x3a
jne 0x4022cf
mov byte [eax], 0x5f
push eax
call fcn.00401f77
cmp byte [eax], 0
jne 0x4022c7
cmp byte [esp + 0x17], 0
je 0x402304
call fcn.00401982
test eax, eax
je 0x402300
push ebx
lea ecx, [esp + 0x19c]
call fcn.0040bda0
inc dword [esp + 0x1c]
add esi, 0x30
jmp 0x402304
inc dword [esp + 0x28]
add dword [esp + 0x3c], edi
lea ecx, [esp + 0x12c0]
adc dword [esp + 0x40], 0
call fcn.0040bbbd
jmp 0x4020a8
mov dword [esp + 0x10], 0x33
jmp 0x4023a3
mov ecx, dword [0x420628]
mov eax, ecx
xor eax, dword [esp + 0x3c]
mov esi, 0xffff
and eax, esi
xor edx, edx
or eax, edx
je 0x40236e
cmp ecx, esi
jne 0x40234d
cmp dword [0x42062c], edx
je 0x40236e
push 0xa0
call fcn.00408921
push eax
push 0x427f84
call fcn.004099cb
pop ecx
pop ecx
mov dword [esp + 0x10], 3
jmp 0x4023a3
push 4
push 0x4205b2
push ebp
call fcn.00408e12
neg eax
sbb eax, eax
neg eax
mov dword [esp + 0x60], eax
jmp 0x4023a3
mov dword [esp + 0x10], eax
jmp 0x4023a3
push ebx
push 0x68
call fcn.00408921
push eax
push 0x427f84
call fcn.004099cb
add esp, 0xc
mov dword [esp + 0x18], edi
cmp byte [0x421704], 0
mov eax, dword [0x420590]
mov dword [esp + 0x74], eax
mov eax, dword [0x420594]
mov dword [esp + 0x78], eax
mov eax, dword [0x420560]
mov dword [esp + 0x68], eax
mov eax, dword [0x420568]
mov dword [esp + 0x6c], eax
mov eax, dword [0x42056c]
mov dword [esp + 0x70], eax
je 0x402416
and dword [0x421708], 0
push 0x40d288
push 0x427f84
call fcn.0040716b
mov ecx, dword [0x420580]
xor eax, eax
mov word [0x428384], ax
test ecx, ecx
je 0x40240a
mov eax, dword [ecx]
push edi
call dword [eax]
and dword [0x420580], 0
call fcn.00403a46
and dword [esp + 0x2c], 0
cmp dword [esp + 0x1c], 0
jle 0x402c19
mov eax, dword [esp + 0x38]
shl eax, 6
mov dword [esp + 0x64], eax
jmp 0x402437
mov eax, dword [esp + 0x64]
mov ecx, dword [esp + 0x2c]
add eax, ecx
imul ecx, ecx, 0x30
add ecx, dword [esp + 0x44]
mov dword [esp + 0x24], eax
mov dword [0x410550], ecx
lea ecx, [esp + 0x198]
call fcn.0040bdfc
cmp byte [0x421704], 0
mov dword [esp + 0x50], eax
je 0x4024c7
mov eax, dword [0x410550]
mov eax, dword [eax + 0x20]
cmp eax, dword [0x421708]
je 0x4024c7
movzx ecx, word [0x420618]
cmp eax, ecx
jne 0x402493
push 0x40d284
push 0x427f84
call fcn.0040716b
jmp 0x40249e
push eax
push 0x427f84
call fcn.00401e77
mov eax, dword [0x410550]
mov ecx, dword [0x420580]
mov eax, dword [eax + 0x20]
mov dword [0x421708], eax
test ecx, ecx
je 0x4024bb
mov eax, dword [ecx]
push 1
call dword [eax]
and dword [0x420580], 0
call fcn.00403a46
mov eax, dword [0x410550]
mov edi, dword [eax]
add edi, dword [0x420598]
mov esi, dword [eax + 4]
adc esi, dword [0x42059c]
push 0
push 0x2000
push esi
push edi
call fcn.00401200
mov ebp, eax
mov eax, edi
sub eax, ebp
mov ecx, esi
sbb ecx, edx
test esi, esi
jg 0x4025a3
jl 0x402507
test edi, edi
jae 0x4025a3
push 0xa0
call fcn.00408921
push eax
push 0x427f84
call fcn.004099cb
cmp dword [esp + 0x2c], 0
pop ecx
pop ecx
mov dword [esp + 0x10], 2
jne 0x402596
mov eax, dword [0x420598]
mov ecx, dword [0x42059c]
mov edx, eax
or edx, ecx
je 0x402596
mov dword [esp + 0x34], ecx
xor ecx, ecx
push ecx
mov dword [esp + 0x34], eax
mov eax, dword [0x410550]
mov dword [0x420598], ecx
mov dword [0x42059c], ecx
mov esi, dword [eax + 4]
mov edi, dword [eax]
push 0x2000
push esi
push edi
call fcn.00401200
mov ebp, eax
mov eax, edi
sub eax, ebp
mov ecx, esi
sbb ecx, edx
test esi, esi
jg 0x4025a3
jl 0x40257f
test edi, edi
jae 0x4025a3
push 0xa0
call fcn.00408921
push eax
push 0x427f84
call fcn.004099cb
pop ecx
pop ecx
mov dword [esp + 0x10], 3
jmp 0x402c07
cmp eax, dword [0x420590]
jne 0x4025e2
cmp ecx, dword [0x420594]
jne 0x4025e2
cmp byte [0x421704], 0
jne 0x4025e2
mov eax, dword [0x420560]
mov ecx, dword [0x42055c]
sub eax, ebp
sub eax, ecx
cdq
add dword [0x420568], eax
adc dword [0x42056c], edx
add ebp, ecx
mov dword [0x420560], ebp
jmp 0x402650
push 0
push ecx
mov ecx, dword [0x420580]
push eax
call fcn.004033ef
mov ecx, dword [0x420580]
call fcn.00402f56
push 0x2000
push dword [0x42055c]
mov dword [0x420590], eax
mov dword [0x420594], edx
call fcn.00403baf
cdq
mov dword [0x420568], eax
mov dword [0x42056c], edx
test edx, edx
jg 0x402635
jl 0x40257f
test eax, eax
jbe 0x40257f
mov eax, dword [0x42055c]
add eax, ebp
mov dword [0x420560], eax
mov eax, ebp
cdq
sub dword [0x420568], eax
sbb dword [0x42056c], edx
push 4
mov esi, 0x40f93c
push esi
call fcn.00403c5f
test eax, eax
je 0x40257f
push 4
push 0x4205a8
push esi
call fcn.00408e12
mov edi, 0xa0
test eax, eax
je 0x40272c
push edi
call fcn.00408921
push eax
push 0x427f84
call fcn.004099cb
mov eax, dword [0x420598]
pop ecx
xor edx, edx
pop ecx
mov ecx, dword [0x42059c]
mov dword [esp + 0x10], 2
cmp dword [esp + 0x24], edx
jne 0x4026b3
mov ebp, eax
or ebp, ecx
jne 0x402716
or eax, ecx
jne 0x402c07
mov eax, dword [esp + 0x30]
or eax, dword [esp + 0x34]
je 0x402c07
mov eax, dword [esp + 0x30]
mov dword [0x420598], eax
mov eax, dword [esp + 0x34]
mov dword [0x42059c], eax
mov esi, 0x40f93c
mov eax, dword [0x410550]
push dword [eax + 4]
push dword [eax]
call fcn.00403e49
test eax, eax
jne 0x402710
push 4
push esi
call fcn.00403c5f
test eax, eax
je 0x402710
push 4
push 0x4205a8
push esi
call fcn.00408e12
test eax, eax
je 0x40272c
push edi
jmp 0x402584
mov dword [esp + 0x30], eax
mov dword [esp + 0x34], ecx
mov dword [0x420598], edx
mov dword [0x42059c], edx
jmp 0x4026e0
call fcn.00407c93
mov esi, eax
xor ebp, ebp
cmp esi, ebp
je 0x402755
push edi
call fcn.00408921
push eax
push 0x427f84
call fcn.004099cb
pop ecx
pop ecx
mov dword [esp + 0x10], esi
jmp 0x402c07
movzx eax, word [0x4205ba]
push eax
movzx eax, word [0x4205d8]
push 2
push eax
call fcn.0040401d
cmp eax, ebp
je 0x40279a
cmp eax, dword [esp + 0x10]
jle 0x40277a
mov dword [esp + 0x10], eax
cmp eax, 1
jle 0x40279a
push ebx
push 0x68
call fcn.00408921
push eax
push 0x427f84
call fcn.004099cb
add esp, 0xc
jmp 0x402c07
mov eax, dword [0x4205a0]
cmp eax, ebp
je 0x4027af
push eax
call fcn.004089b3
mov dword [0x4205a0], ebp
movzx eax, word [0x4205da]
push ebp
push 3
push eax
call fcn.0040401d
cmp eax, ebp
je 0x4027d2
cmp eax, dword [esp + 0x10]
jle 0x4027cd
mov dword [esp + 0x10], eax
cmp eax, 1
jg 0x40277f
movzx eax, word [0x4205da]
push 0x4205bc
push eax
push dword [0x4205a0]
call fcn.0040bfcf
cmp dword [esp + 0x50], ebp
je 0x4027fa
push dword [esp + 0x50]
push ebx
call fcn.00408d4c
cmp byte [0x4258d0], 0
je 0x40284b
cmp dword [0x426980], 5
je 0x40284b
mov edi, 0x4258d0
push edi
call fcn.00408c59
mov esi, eax
cmp esi, ebp
jbe 0x40284b
push esi
push ebx
push edi
call fcn.0040ba6b
test eax, eax
jne 0x40284b
lea esi, [esi + 0x420684]
mov al, byte [esi]
cmp al, 0x5c
je 0x402839
cmp al, 0x2f
jne 0x40283c
inc esi
jmp 0x40282f
push esi
call fcn.00408c59
inc eax
push eax
push esi
push ebx
call fcn.00408c0e
cmp dword [0x426980], 2
jne 0x40286b
push ebx
call fcn.00406ecb
mov esi, eax
push esi
call fcn.00408c59
inc eax
push eax
push esi
push ebx
call fcn.00408c0e
push ebx
call fcn.00406f5e
cmp byte [eax], 0x5c
sete byte [esp + 0x17]
cmp byte [esp + 0x17], 0
je 0x402883
mov byte [eax], 0
push ebx
push ebx
call fcn.00406f7a
cmp dword [0x426980], 5
jne 0x4028b4
cmp byte [0x420685], 0x5f
jne 0x4028b4
movsx eax, byte [0x420686]
push eax
call fcn.00406d49
test al, al
je 0x4028b4
mov byte [0x420685], 0x3a
push ebx
mov ebp, 0x421284
push ebp
call fcn.00408d4c
xor eax, eax
mov word [0x420a84], ax
mov eax, dword [0x4205ba]
shr eax, 0xb
test al, 1
je 0x4028fd
mov esi, 0x400
push esi
mov edi, 0x420a84
push edi
push ebx
call fcn.0040c483
push esi
push ebp
xor eax, eax
push edi
mov word [0x421282], ax
call fcn.0040c42d
mov byte [0x421683], 0
mov eax, dword [0x410550]
test byte [eax + 0x24], 0x10
je 0x402919
mov eax, dword [eax + 0x1c]
test eax, eax
je 0x402914
cmp eax, 0xb
jne 0x402919
mov byte [esp + 0x17], 1
xor esi, esi
cmp byte [0x427353], 0x49
push esi
sete al
movzx eax, al
push eax
movzx eax, byte [0x426a72]
push eax
push esi
push ebx
call fcn.0040a191
test al, al
je 0x402c19
cmp byte [0x426a72], 0
jne 0x402b88
cmp byte [esp + 0x17], 0
jne 0x402a80
push 0x420a84
push ebx
call fcn.00403f92
cmp eax, 0xffffffff
je 0x402a66
test eax, eax
je 0x40299e
cmp eax, 1
jne 0x402b88
mov eax, dword [0x42695c]
cmp eax, 2
je 0x402c07
cmp byte [0x42697d], 0
jne 0x40299a
cmp byte [0x42697c], 0
je 0x4029ac
test esi, esi
jmp 0x4029a6
mov eax, dword [0x42695c]
cmp eax, 2
je 0x402c07
test eax, eax
je 0x4029b9
cmp eax, 3
jne 0x402b88
push 0x421284
lea eax, [esp + 0x294]
push eax
call fcn.00408d4c
movzx eax, word [0x4205c0]
movzx ecx, word [0x4205be]
push 0
shl eax, 0x10
add eax, ecx
push eax
push dword [0x40f92c]
lea eax, [esp + 0x29c]
push dword [0x40f928]
push eax
push 0x40f941
call fcn.0040a1c5
mov al, byte [0x40f941]
cmp al, 0x43
je 0x402c19
cmp al, 0x41
je 0x402b7e
cmp al, 0x4e
je 0x402c07
cmp al, 0x52
je 0x402a35
cmp al, 0x59
je 0x402b88
cmp al, 0x72
je 0x402a35
cmp al, 0x79
jne 0x4029b9
jmp 0x402b88
lea eax, [esp + 0x290]
push eax
push ebx
call fcn.00408d4c
push ebx
call fcn.00408c59
cmp byte [eax + 0x420683], 0xa
jne 0x402a5a
dec eax
mov byte [eax + 0x420684], 0
test eax, eax
je 0x402a35
xor esi, esi
inc esi
jmp 0x402959
cmp byte [0x42697c], 0
je 0x402b88
test esi, esi
je 0x402c07
jmp 0x402b88
cmp byte [0x42697c], 0
jne 0x402c07
cmp byte [0x420684], 0
je 0x402c07
mov eax, dword [0x410550]
mov ecx, dword [eax + 0x1c]
xor esi, esi
test ecx, ecx
je 0x402aad
cmp ecx, 0xb
jne 0x402ab0
mov esi, dword [eax + 0x24]
mov edi, 0x420a84
push edi
push ebx
call fcn.0040351e
test al, al
jne 0x402b25
cmp byte [0x426a12], al
push esi
sete al
movzx eax, al
push eax
push edi
push ebx
call fcn.00403731
test eax, eax
je 0x402b25
push 1
push edi
push ebx
call fcn.00403798
cmp byte [0x426a12], 0
push esi
sete al
movzx eax, al
push eax
push edi
push ebx
call fcn.00403731
test eax, eax
je 0x402b25
push 0x421284
push 0x6f
call fcn.00408921
push eax
push 0x427f84
call fcn.004099cb
add esp, 0xc
mov ecx, 0x424098
call fcn.0040183f
jmp 0x402c07
movzx esi, word [0x4205c0]
movzx eax, word [0x4205be]
shl esi, 0x10
lea ecx, [esp + 0x7c]
or esi, eax
call fcn.0040bf1e
push esi
lea ecx, [esp + 0x80]
call fcn.0040bea4
push 0
push 0
lea eax, [esp + 0x84]
push eax
push edi
push ebx
call fcn.004038f6
push edi
push ebx
lea ecx, [esp + 0xa8]
call fcn.0040bc78
push esi
lea ecx, [esp + 0x58]
call fcn.00401fac
jmp 0x402c07
mov dword [0x42695c], 1
mov eax, dword [0x410550]
test byte [eax + 0x28], 1
je 0x402be0
call fcn.0040c41a
test eax, eax
je 0x402be0
cmp eax, 1
jne 0x402bca
cmp dword [0x40f8e8], 0
jne 0x402bc4
push 0x421284
push 0x73
call fcn.00408921
push eax
push 0x427f84
call fcn.004099cb
add esp, 0xc
inc dword [esp + 0x20]
jmp 0x402c07
cmp eax, dword [esp + 0x10]
jle 0x402bd4
mov dword [esp + 0x10], eax
push 0x421284
push 0x73
jmp 0x402782
and dword [0x420654], 0
call fcn.00401a90
test eax, eax
je 0x402c07
cmp eax, dword [esp + 0x10]
jle 0x402bfa
mov dword [esp + 0x10], eax
cmp dword [0x420654], 1
jg 0x402d40
inc dword [esp + 0x2c]
mov eax, dword [esp + 0x2c]
cmp eax, dword [esp + 0x1c]
jl 0x402433
mov ecx, dword [0x420580]
push 0
push dword [esp + 0x7c]
push dword [esp + 0x7c]
call fcn.004033ef
mov ecx, dword [0x420580]
call fcn.00402f56
push 0x2000
push dword [0x42055c]
mov dword [0x420590], eax
mov dword [0x420594], edx
call fcn.00403baf
mov eax, dword [esp + 0x68]
inc dword [esp + 0x38]
cmp dword [esp + 0x18], 0
mov dword [0x420560], eax
mov eax, dword [esp + 0x6c]
mov dword [0x420568], eax
mov eax, dword [esp + 0x70]
mov dword [0x42056c], eax
je 0x40208e
mov ebx, 0x400
push ebx
lea eax, [esp + 0x694]
push eax
lea eax, [esp + 0x298]
push eax
lea ecx, [esp + 0xac]
call fcn.0040bdae
xor ebp, ebp
test al, al
je 0x402d05
mov esi, dword [esp + 0x54]
mov edi, dword [esi]
lea ecx, [esp + 0x7c]
call fcn.0040bf1e
push edi
lea ecx, [esp + 0x80]
call fcn.0040bea4
push ebp
push ebp
lea eax, [esp + 0x84]
push eax
lea eax, [esp + 0x69c]
push eax
lea eax, [esp + 0x2a0]
push eax
call fcn.004038f6
push ebx
lea eax, [esp + 0x694]
push eax
lea eax, [esp + 0x298]
push eax
lea ecx, [esp + 0xac]
add esi, 4
call fcn.0040bdae
test al, al
jne 0x402caa
cmp dword [0x4237e0], ebp
jne 0x402d81
cmp dword [esp + 0x60], ebp
je 0x402d81
cmp byte [0x421704], 0
jne 0x402d81
push 0xa0
call fcn.00408921
push eax
push 0x427f84
call fcn.004099cb
mov edi, dword [esp + 0x18]
pop ecx
pop ecx
cmp edi, ebp
jne 0x402d85
xor edi, edi
inc edi
jmp 0x402d85
lea ecx, [esp + 0xa0]
call fcn.0040bc2d
cmp dword [esp + 0x54], 0
je 0x402d5c
push dword [esp + 0x54]
call fcn.004089b3
lea ecx, [esp + 0x198]
call fcn.0040bc2d
cmp dword [esp + 0x44], 0
je 0x402d78
push dword [esp + 0x44]
call fcn.004089b3
mov eax, dword [esp + 0x10]
jmp 0x402e32
mov edi, dword [esp + 0x10]
mov ebx, dword [esp + 0x24]
movzx esi, word [esp + 0x20]
inc ebx
cmp ebx, esi
jne 0x402db3
cmp byte [0x427353], 0x49
je 0x402db3
push 0x343
call fcn.00408921
push eax
push 0x427f84
call fcn.004099cb
pop ecx
pop ecx
cmp ebx, ebp
jne 0x402dce
cmp edi, 1
jg 0x402dce
xor ax, ax
cmp ax, word [esp + 0x28]
sbb edi, edi
and edi, 0x46
add edi, 0xb
jmp 0x402dfa
cmp ebx, esi
jne 0x402ddb
cmp edi, 1
jg 0x402ddb
push 0x52
jmp 0x402de9
cmp word [esp + 0x28], bp
jbe 0x402dec
cmp edi, 1
jg 0x402dec
push 0x51
pop edi
jmp 0x402dfa
cmp word [esp + 0x20], bp
jbe 0x402dfa
cmp edi, ebp
jne 0x402dfa
xor edi, edi
inc edi
lea ecx, [esp + 0xa0]
call fcn.0040bc2d
cmp dword [esp + 0x54], ebp
je 0x402e15
push dword [esp + 0x54]
call fcn.004089b3
lea ecx, [esp + 0x198]
call fcn.0040bc2d
cmp dword [esp + 0x44], ebp
je 0x402e30
push dword [esp + 0x44]
call fcn.004089b3
mov eax, edi
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x1368
ret