Function at 0x6151e3
Capabilities:
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 0x615200
cmp dword [ebx + 0x2c], 0
jne 0x615205
mov edi, ebx
mov dword [ebp + 0xc], edi
cmp dword [edi + 0x1c], ebx
je 0x61520d
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.006119c3
mov esi, eax
add esp, 4
mov dword [ebp + 8], esi
test esi, esi
jne 0x615263
push 0x660558
call fcn.006140a3
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 0x6153a1
cmp eax, 0x3c
je 0x61529b
cmp eax, 0xffffffff
jne 0x6153aa
mov edi, dword [ebp - 0x14]
mov byte [esi], 0
cmp edi, 2
je 0x6152ab
cmp edi, 0xffffffff
jne 0x6152b9
push dword [ebp + 8]
call fcn.00613423
add esp, 4
mov dword [ebp - 4], eax
push dword [ebp + 8]
xor esi, esi
call fcn.006127d3
add esp, 4
test eax, eax
je 0x615390
mov eax, edi
sub eax, 1
je 0x61533e
sub eax, 1
je 0x615322
sub eax, 1
jne 0x615390
cmp dword [ebx + 0x44], esi
je 0x615990
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 0x615390
push dword [edi]
push dword [ebp + 8]
push 0x6605a0
call fcn.006140a3
add esp, 0xc
jmp 0x615acf
mov edi, dword [ebp - 8]
push 1
mov dword [edi + 0x18], 2
push dword [ebp + 8]
push edi
call fcn.00616ac3
add esp, 0xc
test eax, eax
jmp 0x61538a
cmp dword [ebx + 0x2e8], esi
je 0x615375
push dword [ebp + 8]
call fcn.00612a53
mov edi, dword [ebp - 8]
add esp, 4
cmp byte [eax], 0
je 0x615378
cmp dword [edi + 0x18], esi
jne 0x615378
mov dword [edi + 0x18], 1
push dword [ebp + 8]
push edi
call fcn.00614f33
add esp, 8
test eax, eax
jmp 0x61538a
mov edi, dword [ebp - 8]
push dword [ebp + 8]
push 0
push edi
call fcn.00614ed3
mov esi, eax
add esp, 0xc
test esi, esi
je 0x6159a2
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 0x615aa1
cmp eax, 0x3c
jne 0x615951
mov eax, dword [ebx + 0x2f0]
push ebx
mov dword [ebp - 4], edi
call eax
mov esi, eax
add esp, 4
cmp esi, 0xffffffff
je 0x6154dc
nop word [eax + eax]
push esi
call fcn.006139f3
add esp, 4
test eax, eax
jne 0x6154dc
cmp esi, 0x3e
je 0x6154dc
cmp esi, 0x2f
jne 0x6153fd
cmp edi, dword [ebp + 8]
ja 0x6154dc
jmp 0x61545d
cmp esi, 0x3c
je 0x6159ba
cmp esi, 0x26
jne 0x615445
push dword [ebp - 8]
push ebx
call fcn.00615f93
add esp, 8
cmp eax, 0xffffffff
je 0x615acf
lea ecx, [ebp - 0x10]
push ecx
lea ecx, [ebp + 8]
push ecx
lea ecx, [ebp - 4]
push ecx
push eax
call fcn.006150c3
add esp, 0x10
test eax, eax
je 0x615acf
mov edi, dword [ebp - 4]
jmp 0x6154c5
cmp esi, 0x30
jge 0x61545d
cmp esi, 0x21
je 0x61545d
cmp esi, 0x2d
je 0x61545d
cmp esi, 0x2e
jne 0x615acf
lea eax, [ebp - 0x10]
push eax
lea eax, [ebp + 8]
push eax
lea eax, [ebp - 4]
push eax
push esi
call fcn.006150c3
add esp, 0x10
test eax, eax
je 0x615acf
mov edi, dword [ebp - 4]
mov eax, edi
mov ecx, dword [ebp + 8]
sub eax, ecx
cmp eax, 1
jne 0x61548e
cmp byte [ecx], 0x3f
je 0x6154dc
cmp eax, 3
jne 0x6154a9
push eax
push 0x660610
push ecx
call 0x811f33
add esp, 0xc
test eax, eax
je 0x6154dc
mov ecx, dword [ebp + 8]
mov eax, edi
sub eax, ecx
cmp eax, 8
jne 0x6154c5
push eax
push 0x6602cc
push ecx
call 0x811f33
add esp, 0xc
test eax, eax
je 0x6154dc
mov eax, dword [ebx + 0x2f0]
push ebx
call eax
mov esi, eax
add esp, 4
cmp esi, 0xffffffff
jne 0x6153d3
mov byte [edi], 0
mov ecx, 0x660610
mov eax, dword [ebp + 8]
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x615507
test dl, dl
je 0x615503
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x615507
add eax, 2
add ecx, 2
test byte [ecx], dh
jmp 0xd6cf9ebb
dec ecx
outsb dx, byte [esi]
salc
sbb eax, 0x118940d9
out dx, al
fld dword [eax - 0x77]
adc esi, ebp
and eax, 0xe4c81889
pop ecx
dec edi
mov eax, ecx
dec ecx
xor ebx, eax
mov eax, dword [0x8542b129]
adc al, 0x93
sal byte [esi - 0x16], 0x6a
inc eax
pop es
mov eax, 0xec64c9b2
rcr dword [esi + 0x6fd1d954], 1
mov dword [0xee79e1c0], eax
mov al, dh
jnp 0x6154f7
test al, 0xbb
clc
xchg ecx, eax
add ebx, dword [ecx - 0x4fbd98c3]
test eax, 0xa94188d5
mov ecx, 0xa8b8f17b
pushfd
add ecx, edx
jmp 0x6155b5
jae 0x6155c1
push esi
push esi
loopne 0x61553c
fisubr dword [ebp + 0x70088048]
pushal
and ch, ch
push ebp
fnsave dword [eax]
invalid
out dx, al
les cx, [ebx + edx*4 - 0x31]
add bh, 0xec
inc eax
invalid
xor ebp, ebp
inc edx
dec edx
cmp dword [esi + 0x7e4ad805], eax
cmc
dec edx
jle 0x615988
stosb byte es:[edi], al
jmp 0x7f7990f3
and dword [edx + 0x314114be], esi
in eax, 0xf8
push esi
sbb dword [esi], ecx
popal
mul ebp
in eax, 0x68
das
lodsb al, byte [esi]
clc
test dword [ecx], ebx
push ecx
dec ebp
and eax, 0xb9c19a3a
mov cl, 0xd9
cmp bl, byte [edx - 0x264e463f]
ljmp 0x4114:0x245a7101
push ebp
mov ah, 0xd1
loope 0x615abc
shl ecx, 1
sbb ch, dh
cmc
cmp al, cl
ror ecx, 0x14
adc byte [eax + 0x5122b8e9], bl
jecxz 0x615aee
invalid
call [eax - 0x4d]
inc edx
push 0xf9b24198
pushal
aam 0xf0
jno 0x615af7
cmp al, 0x84
or al, 0x93
xchg ecx, eax
sar dword [ecx], 1
int1
popal
les ebp, [ebp - 0x7a]
jnp 0x615b05
ret
inc ebx
rol ah, cl
shr dword [esi], 0x80
jnp 0x615aa0
adc al, 0xfd
dec esp
adc eax, 0x64347cc1
and ebx, 0xf96b62f8
test al, 0xc4
dec esp
inc edi
mov ecx, ecx
loop 0x615a9f
jl 0x615aec
push 0xffffffffffffff8c
and eax, esp
mov dword [edi + edi*8 - 0x7d], eax
sub al, 0x53
std
xor al, 0xc
xchg ecx, eax
cmp dword [ecx + 0x60188fb0], ecx
add dword [ecx + 0x21], ebp
nop
out 1, eax
in al, dx
add al, 7
fnsave dword [ecx - 0x375e7f5f]
retf