Function at 0x4ff604
Capabilities:
Contain obfuscated stackstrings
Encode data using xor

Disassembly:
lea esp, [esp + 1]
cmp ebx, edi
push si
push word [esp + 1]
mov word [esp], si
mov byte [esp], al
mov byte [esp], ah
mov byte [esp], dh
push word [esp + 1]
jmp 0x4ff6a5
xor edi, edi
push bp
lea esp, [esp + 2]
lea esp, [esp + 0x18]
stc
pushfd
lea esp, [esp + 2]
add esp, 0
add esp, 1
mov byte [esp], dl
cmc
lea esp, [esp]
cmc
jmp 0x4ff58c
sub esp, 0
sub esp, 0x1a
mov dword [esp + 0xa], esp
lea esp, [esp + 2]
jmp 0x4ff5b8
lea esp, [esp + 4]
jmp 0x4ff5e6
push 0x4c0
push 8
call fcn.005225f2
adc edi, edi
adc eax, 0x509058
jmp 0x4ff682
mov dword [esp + 0x10], edi
cmp dword [eax], edi
jmp 0x582385
mov ecx, ebx
call fcn.005288d0
mov ecx, dword [eax + 0x7c]
mov edi, dword [eax + 0x78]
xor esi, esi
add edi, ebx
mov dword [esp + 0x2c], ecx
cmp ecx, esi
je 0x4ff9e4
jmp 0x58253f
call fcn.005225be
jmp 0x4ff63e
mov byte [esp + 4], bh
mov dword [esp], ecx
lea esp, [esp + 2]
lea esp, [esp + 4]
je 0x4ff9e4
call fcn.0052256b
cmp eax, edi
jne 0x4ff63e
jmp 0x4ff616
call fcn.004ff604
retf
jmp 0x4ff9ed
xor eax, eax
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 8
jbe 0x4ff654
cmp ebx, dword [eax + edi + 4]
jne 0x5823f2
pushfd
mov word [esp], cx
push word [esp + 1]
pushfd
jmp 0x5823d3
lea esp, [esp + 8]
cmp dword [eax + edi + 8], esi
jbe 0x5823f2
and dword [esp + 0x14], esi
jmp 0x58243a
mov byte [esp + 7], ch
mov dword [esp + 5], eax
lea esp, [esp + 2]
xor esi, esi
jmp 0x5823b7
inc dword [esp + 0x10]
mov ecx, dword [esp + 0x10]
add edi, 0xc
jmp 0x582560
mov eax, dword [esp + 0x10]
call 0x522c30
dec ecx
inc eax
imul eax, eax, 0xc
imul esi, esi, 0x14
push esi
mov esi, ecx
lea esi, [eax + esi]
mov eax, dword [esi]
pop esi
mov eax, dword [eax + esi + 0x10]
jmp 0x4ff9ef
mov ecx, dword [eax + edi + 0xc]
add ecx, dword [esp + 0x14]
mov eax, dword [ebp + 0xc]
call fcn.0052877f
test eax, eax
je 0x58240e
call fcn.005225ce
add dword [esp + 0x14], 0x14
inc esi
cmp esi, dword [eax + edi + 8]
jb 0x5823c5
jae 0x5823f2
std
imul edi, ebx, 0xffffff9e
insd dword es:[edi], dx
aad 0x63
cli
push 0xb64ffa0f
fucompi st(5)
mov dl, byte [eax]
fild word [edi - 0x3d5f8142]
sbb esp, ebx
pcmpgtb mm2, qword [edi]
dec edi
clts
sub byte [esi], bh
sti
mov dl, 0x11
inc esp
xchg bp, ax
jb 0x5824de
sub ch, byte [esi + ecx*8 + 0x6630fbc5]
push cs
inc ecx
pop eax
jp 0x58244a
invalid
insd dword es:[edi], dx
bound eax, qword [edi + esi*4 - 0x30ed0f27]
int1
pushal
iretd
call 0x52270d
mov ecx, dword [eax]
imul ecx, ecx, 0xc
mov dword [eax + ecx + 4], ebx
call 0x5226db
mov ecx, dword [eax]
push ebp
mov ebp, edi
lea ebp, [ebp + 0x18]
mov edx, dword [ebp]
pop ebp
imul ecx, ecx, 0xc
mov dword [eax + ecx + 8], edx
push ebx
jmp 0x5826ac
call 0x522732
push 0x508ff8
call dword [eax + 0x94]
jmp 0x5824eb
cmp edi, ebx
jbe 0x4ff9e4
jmp 0x582521
cmp ecx, dword [eax]
jb 0x58238b
jae 0x4ff654
pop es
mov ebx, dword [ebx]
jle 0x582500
dec ecx
lahf
sbb al, 0xb2
aad 0x24
xchg esp, eax
sub eax, 0xb54623b3
add ebp, dword [reloc.oleaut32.dll_SysFreeString]
stosd dword es:[edi], eax
nop
pop edx
leave
and byte [esi + 0x25ce557a], ah
jl 0x582608
pop ds
bound edx, qword [eax + 0x67]
mov esi, 0xde272c31
sub al, 0x42
push dword [esi - 0x60f9ceb]
cld
and eax, 0xfc3b8627
sbb dword [ebx], edi
push ecx
adc al, 0x49
or al, 0x24
out 5, eax
arpl word [esi + 0x6c39e2ed], dx
ret
lea esp, [esp + 4]
popal
lea esi, [esp + 0x38]
call fcn.00528a4f
mov eax, esi
jmp 0x58267d
mov ecx, dword [esp + 0x14]
mov esi, dword [eax + ecx*4]
lea eax, [esp + 0x38]
add esi, ebx
call fcn.00528892
mov eax, esi
lea ecx, [eax + 1]
mov dl, byte [eax]
inc eax
test dl, dl
jne 0x582608
sub eax, ecx
pushal
mov ax, dx
xchg dl, bl
xchg ebp, ebx
lea edi, [ebx*4]
mov bx, 0x45fb
mov edx, dword [esp]
mov edx, 0x738a53f6
mov bh, byte [esp]
bswap eax
mov dword [esp + 0x18], esi
push edx
lea esp, [esp + 2]
push ecx
mov dword [esp], esp
push word [esp + 4]
mov word [esp + 5], si
lea esp, [esp]
pop dword [esp]
jmp 0x5825c6
call 0x522943
inc dword [eax]
jmp 0x583d63
call fcn.0052899a
call fcn.005228d2
push edx
mov edx, eax
mov ecx, dword [edx]
pop edx
inc ecx
imul ecx, ecx, 0xc
mov ecx, dword [eax + ecx]
add ecx, dword [esp + 0x10]
push 0x10
jmp 0x582781
mov ebx, edi
lea ebx, [ebx + 0x18]
mov eax, dword [ebx]
pop ebx
imul eax, eax, 0x14
push eax
push 8
call fcn.005227bc
outsd dx, dword [esi]
call dword [0x509058]
call int.005228ee
pop eax
mov edx, dword [ecx]
inc edx
imul edx, edx, 0xc
mov dword [ecx + edx], eax
mov eax, dword [edi + 0x20]
clc
sub esp, 0x13
push dword [esp + 7]
push dword [esp + 0xf]
add esp, 0
sub esp, 0x18
mov byte [esp + 0x20], bh
pop dword [esp + 0x2a]
lea esp, [esp + 3]
add eax, ebx
pushal
lea esp, [esp + 0x4c]
mov dword [esp + 0x30], eax
mov dword [esp + 0x14], esi
cmp dword [edi + 0x18], esi
jbe 0x582661
mov dword [esp + 0x10], esi
jmp 0x5825f1
lea esp, [esp]
mov word [esp], cx
lea esp, [esp + 2]
popal
lea edi, [eax + edi]
jmp 0x5828aa
mov byte [esp + 2], bl
mov word [esp], dx
mov byte [esp], bl
pop word [esp]
jmp 0x582717
lea eax, [ecx + eax*4]
push edi
pushal
bswap si
mov edx, 0xc870c81
bswap cx
mov dh, 0xbf
mov dh, ah
mov dword [esp], ebx
pushfd
mov dword [esp], eax
jmp 0x582736
lea edx, [esp + 0x94]
call fcn.00528ae6
mov eax, dword [esp + 0x18]
pop ecx
mov ecx, dword [edi + 0x24]
lea eax, [ebx + eax*2]
movzx eax, word [eax + ecx]
mov ecx, dword [edi + 0x1c]
jmp 0x582754
mov byte [esp + 2], ah
mov dword [esp], ecx
pop word [esp + 3]
push word [esp + 2]
jmp 0x58288c
mov eax, esi
jmp 0x583cb7
mov byte [esp], dl
push ebp
pop word [esp]
lea esp, [esp + 3]
push esi
push esi
jmp 0x582a59
cmp esi, ebx
jne 0x582b04
mov byte [esp + 0x26], 0x42
jmp 0x582c14
mov esi, eax
test esi, esi
jne 0x582841
call fcn.0052296c
mov eax, dword [eax + 0x10]
pushfd
lea esp, [esp + 2]
mov word [esp], si
mov byte [esp], bl
lea esp, [esp + 1]
jmp 0x582824
mov dword [esp + 4], eax
lea esp, [esp + 4]
call dword [0x509050]
jmp 0x58285e
mov esi, dword [edi]
pop edi
add esi, ebx
cmp esi, edi
jb 0x582808
mov eax, dword [esp + 0x2c]
pushfd
add esp, 1
mov byte [esp], cl
mov word [esp], sp
lea esp, [esp]
push edx
mov word [esp + 1], bp
mov word [esp + 4], si
lea esp, [esp + 3]
add eax, edi
pushfd
push dword [esp + 2]
mov word [esp + 4], cx
lea esp, [esp + 0xc]
cmp esi, eax
jae 0x582808
pushal
xchg cx, di
mov di, word [esp]
mov bp, di
mov ax, 0x622
mov ax, 0x3dfc
mov ecx, dword [esp]
mov cx, bp
mov dword [esp + 0x1c], esi
push sp
mov byte [esp], dh
lea esp, [esp + 2]
popal
call fcn.00528eba
mov dword [esp + 0x34], eax
test eax, eax
je 0x582808
sub eax, esi
push eax
mov edx, esi
lea ecx, [esp + 0xa4]
mov dword [esp + 0x2c], eax
call fcn.00528dbf
mov eax, dword [esp + 0x2c]
mov byte [esp + eax + 0xa4], 0
pop ecx
lea eax, [esp + 0xa0]
push ebp
pushfd
jmp 0x5827e7
lea ecx, [esp + 0xa8]
pushal
pop word [esp + 0xe]
pop dword [esp + 0xd]
mov dword [esp + 0xa], edi
mov byte [esp + 2], ch
push word [esp + 0xe]
mov dword [esp + 0x18], ecx
pushfd
jmp 0x582b35
mov ecx, dword [esp + 0x34]
lea eax, [ecx + 1]
cmp byte [eax], 0x23
jne 0x582b46
add ecx, 2
push ecx
call fcn.00511386
mov ch, dl
lea ecx, reloc.oleaut32.dll_SysFreeString
mov ecx, dword [esp]
pushal
jmp 0x582bf7
push dword [esp + 3]
lea esp, [esp + 0x20]
call eax
mov esi, eax
jmp 0x582841
pushal
mov dword [esp + 0x17], eax
push dword [esp + 0x1a]
mov dword [esp + 0x20], eax
push ebx
push word [esp + 3]
pop word [esp + 1]
jmp 0x583cd4
mov dword [esp + 0xb], ebp
mov word [esp + 0xc], si
lea esp, [esp + 6]
push word [esp + 0x18]
lea esp, [esp + 0x48]
lea eax, [esp + esi + 0x18]
mov cl, byte [eax]
sub cl, 3
xor cl, 0x3f
inc esi
cmp esi, 0xf
mov byte [eax], cl
jl 0x582b81
lea eax, [esp + 0x18]
push dx
mov word [esp], si
mov word [esp], cx
mov byte [esp], ah
lea esp, [esp + 1]
lea esp, [esp + 1]
push eax
call dword [0x509050]
mov esi, eax
jmp 0x582b04
lea esp, [esp + 2]
lea esp, [esp + 0x40]
jmp 0x582b46
pop dword [esp + 0x11]
mov dword [esp + 0x1a], ebx
pop word [esp + 0xf]
pushal
jmp 0x582bbc
mov byte [esp + 0x17], ch
push dword [esp + 0xc]
mov byte [esp + 0x1a], al
jmp 0x582bd9
mov byte [esp + 0x25], 0x56
mov byte [esp + 0x24], 0x56
mov byte [esp + 0x23], 0x5e
mov byte [esp + 0x22], 0x14
mov byte [esp + 0x21], 0x5d
mov byte [esp + 0x20], 0x4f
mov byte [esp + 0x1f], 0x61
mov byte [esp + 0x1e], 0x80
mov byte [esp + 0x1d], 0x56
mov byte [esp + 0x1c], 0x5d
mov byte [esp + 0x1b], 0x54
mov byte [esp + 0x1a], 0x50
mov byte [esp + 0x19], 0x5d
mov byte [esp + 0x18], 0x77
sub esp, 0x14
pop dword [esp + 9]
mov word [esp + 5], si
sub esp, 0x1e
push word [esp]
sub esp, 0x14
push word [esp + 0x1f]
lea esp, [esp + 0x19]
lea esp, [esp + 1]
xor esi, esi
pushal
mov byte [esp + 0x14], bl
mov word [esp + 4], si
jmp 0x582b6b
call fcn.00522939
add byte [ebp - 0x75], dl
jmp 0x5d589231
call 0x528b1a
jmp 0x583c99
mov byte [esp], dl
mov word [esp + 1], dx
mov word [esp + 1], dx
lea esp, [esp + 3]
push dx
push word [esp + 1]
lea esp, [esp + 1]
lea esp, [esp + 0x24]
push esi
call fcn.00528b43
mov esi, eax
jmp 0x582808
call 0x522a2b
push 0x508ff8
call dword [eax + 0x98]
jmp 0x4ff6ea