Function at 0x614fe3
Capabilities:
Encode data using xor
Packed with generic packer

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x1c
push ebx
mov ebx, dword [ebp + 8]
push edi
mov edi, dword [ebp + 0xc]
test edi, edi
jne 0x615000
cmp dword [ebx + 0x2c], 0
jne 0x615005
mov edi, ebx
mov dword [ebp + 0xc], edi
cmp dword [edi + 0x1c], ebx
je 0x61500d
pop edi
xor eax, eax
pop ebx
mov esp, ebp
pop ebp
ret
push esi
push 0x40
mov dword [ebp - 8], edi
mov dword [ebp - 0xc], 0
mov dword [ebp - 0x18], 0
mov dword [ebx + 0x2e4], 0
mov dword [ebx + 0x2e8], 0
mov dword [ebp - 0x10], 0x40
call fcn.006117c3
mov esi, eax
add esp, 4
mov dword [ebp + 8], esi
test esi, esi
jne 0x615063
push 0x660558
call fcn.00613ea3
add esp, 4
xor eax, eax
pop esi
pop edi
pop ebx
mov esp, ebp
pop ebp
ret
mov eax, dword [ebx + 0x3c]
push edi
push ebx
mov dword [ebp - 4], esi
call eax
add esp, 8
mov dword [ebp - 0x14], eax
mov eax, dword [ebx + 0x2f0]
push ebx
call eax
mov edi, dword [ebp + 8]
add esp, 4
mov dword [ebp - 0x1c], eax
cmp esi, edi
jbe 0x6151a1
cmp eax, 0x3c
je 0x61509b
cmp eax, 0xffffffff
jne 0x6151aa
mov edi, dword [ebp - 0x14]
mov byte [esi], 0
cmp edi, 2
je 0x6150ab
cmp edi, 0xffffffff
jne 0x6150b9
push dword [ebp + 8]
call fcn.00613223
add esp, 4
mov dword [ebp - 4], eax
push dword [ebp + 8]
xor esi, esi
call fcn.006125d3
add esp, 4
test eax, eax
je 0x615190
mov eax, edi
sub eax, 1
je 0x61513e
sub eax, 1
je 0x615122
sub eax, 1
jne 0x615190
cmp dword [ebx + 0x44], esi
je 0x615790
mov edi, dword [ebp - 8]
mov dword [edi + 0x18], 3
push dword [ebp + 8]
mov eax, dword [ebx + 0x44]
push edi
push ebx
call eax
add esp, 0xc
test eax, eax
jne 0x615190
push dword [edi]
push dword [ebp + 8]
push 0x6605a0
call fcn.00613ea3
add esp, 0xc
jmp 0x6158cf
mov edi, dword [ebp - 8]
push 1
mov dword [edi + 0x18], 2
push dword [ebp + 8]
push edi
call fcn.006168c3
add esp, 0xc
test eax, eax
jmp 0x61518a
cmp dword [ebx + 0x2e8], esi
je 0x615175
push dword [ebp + 8]
call fcn.00612853
mov edi, dword [ebp - 8]
add esp, 4
cmp byte [eax], 0
je 0x615178
cmp dword [edi + 0x18], esi
jne 0x615178
mov dword [edi + 0x18], 1
push dword [ebp + 8]
push edi
call fcn.00614d33
add esp, 8
test eax, eax
jmp 0x61518a
mov edi, dword [ebp - 8]
push dword [ebp + 8]
push 0
push edi
call fcn.00614cd3
mov esi, eax
add esp, 0xc
test esi, esi
je 0x6157a2
mov eax, dword [ebp - 0xc]
test eax, eax
mov edi, dword [ebp + 8]
cmove eax, esi
mov dword [ebp - 0xc], eax
mov eax, dword [ebp - 0x1c]
cmp eax, 0xffffffff
je 0x6158a1
cmp eax, 0x3c
jne 0x615751
mov eax, dword [ebx + 0x2f0]
push ebx
mov dword [ebp - 4], edi
call eax
mov esi, eax
add esp, 4
cmp esi, 0xffffffff
je 0x6152dc
nop word [eax + eax]
push esi
call fcn.006137f3
add esp, 4
test eax, eax
jne 0x6152dc
cmp esi, 0x3e
je 0x6152dc
cmp esi, 0x2f
jne 0x6151fd
cmp edi, dword [ebp + 8]
ja 0x6152dc
jmp 0x61525d
cmp esi, 0x3c
je 0x6157ba
cmp esi, 0x26
jne 0x615245
push dword [ebp - 8]
push ebx
call fcn.00615d93
add esp, 8
cmp eax, 0xffffffff
je 0x6158cf
lea ecx, [ebp - 0x10]
push ecx
lea ecx, [ebp + 8]
push ecx
lea ecx, [ebp - 4]
push ecx
push eax
call fcn.00614ec3
add esp, 0x10
test eax, eax
je 0x6158cf
mov edi, dword [ebp - 4]
jmp 0x6152c5
cmp esi, 0x30
jge 0x61525d
cmp esi, 0x21
je 0x61525d
cmp esi, 0x2d
je 0x61525d
cmp esi, 0x2e
jne 0x6158cf
lea eax, [ebp - 0x10]
push eax
lea eax, [ebp + 8]
push eax
lea eax, [ebp - 4]
push eax
push esi
call fcn.00614ec3
add esp, 0x10
test eax, eax
je 0x6158cf
mov edi, dword [ebp - 4]
mov eax, edi
mov ecx, dword [ebp + 8]
sub eax, ecx
cmp eax, 1
jne 0x61528e
cmp byte [ecx], 0x3f
je 0x6152dc
cmp eax, 3
jne 0x6152a9
push eax
push 0x660610
push ecx
call 0x811d33
add esp, 0xc
test eax, eax
je 0x6152dc
mov ecx, dword [ebp + 8]
mov eax, edi
sub eax, ecx
cmp eax, 8
jne 0x6152c5
push eax
push 0x6602cc
push ecx
call 0x811d33
add esp, 0xc
test eax, eax
je 0x6152dc
mov eax, dword [ebx + 0x2f0]
push ebx
call eax
mov esi, eax
add esp, 4
cmp esi, 0xffffffff
jne 0x6151d3
mov byte [edi], 0
mov ecx, 0x660610
mov eax, dword [ebp + 8]
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x615307
test dl, dl
je 0x615303
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x615307
add eax, 2
add ecx, 2
test dl, dl
jne 0x6152e7
xor eax, eax
jmp 0x61530c
sbb eax, eax
or eax, 1
test eax, eax
jne 0xf32ca563
adc byte [ebp + 0x63], ch
bound edi, qword [esi]
xor ch, byte [edi + 0x55]
pop ebx
xor ah, byte [esi + 0x73]
lcall 0x4df2, 0xbf3031e2
arpl di, bx
xchg edx, eax
iretd
inc esi
cmp edi, ebx
sbb dh, ch
pop ss
adc eax, 0x3486b356
rcr bl, cl
cmovp ebx, ebp
in al, 0xe6
cmp dword [ebx + 0x1367028f], ecx
xchg ebx, eax
out 0x39, al
mov ecx, dword [edi - 0x6cec98fe]
cdq
sub cl, byte [edi + ebx*8]
ficomp word [eax]
invalid
sub ah, byte [esi - 0x5dec53cf]
out 0x6b, al
jmp 0x6156ec
ret 0x28a
mov edx, 0xfc74edf7
imul ebp
in eax, dx
je 0x615765
jl 0x6156fd
sti
jg 0x615766
mov esi, 0x6860105e
pushal
ja 0x615765
std
aas
push edx
jae 0x61577e
jg 0x61572c
aas
sub al, 0x8f
push es
jg 0x61578a
mov ecx, 0x890698b7
movsb byte es:[edi], byte [esi]
cdq
outsd dx, dword [esi]
wait
sbb esi, eax
invalid
out dx, eax
jge 0x615789
invalid
mov edx, dword [ecx]
xchg edi, eax
loope 0x6157f0
mov dword [0x24d9c501], eax
jp 0x615764
mov edi, 0x5fe22fe4
or eax, eax
scasd eax, dword es:[edi]
aas
mov bl, byte [ebx + 0x70a22843]
fimul dword [ecx + 0x51d39b5e]
pop ss
sub byte [edx + 0x5e89da70], ah
wait
rcl dword [ecx + 0x17], cl
xchg byte [esi], bh
ljmp 0x2bf
or eax, 0x9e2b1b51
mov bh, 0x29
popal
invalid
mov ebx, 0x42c3d5f7
jecxz 0x6158db
inc eax
cmpsd dword [esi], dword es:[edi]
fbld tbyte [ebx - 0x62798d9f]
jb 0x6158a5
imul edi, ecx, 0x28
push esp
sub ebp, dword [esi - 0x1a63b8f8]
ret 0x3ef2
pushfd
in eax, 0xc2
leave
leave
jl 0x615886
sub al, 3
mov edx, 0xcaeea360
push 0xffffffffffffff9f
mov dword [0x7abf818b], eax
mov bh, 0xaf
outsb dx, byte [esi]
and edx, dword [edi - 0x6215a3fd]
xchg dword [edx + ebx*2], ebx
invalid
stc
push ss
and edi, dword [edi]
or dword [edi + 0x404baadb], eax
retf 0x8752
xchg edx, edi
mov bh, 0xed
sub ch, byte [edi - 0x4525707e]
salc
clc
rcl byte [edx + 0x78], 0x27
mov ecx, 0x12fbe4c9
fist dword [ecx + 0x49]
ret