Function at 0x108f818
Capabilities:
Encode data using xor

Disassembly:
mov edi, edi
push ebx
mov ebx, esp
push ecx
push ecx
and esp, 0xfffffff8
add esp, 4
push ebp
mov ebp, dword [ebx + 4]
mov dword [esp + 4], ebp
mov ebp, esp
sub esp, 0x50
mov eax, dword [0x12d3ad4]
xor eax, ebp
mov dword [ebp - 4], eax
mov ecx, dword [ebx + 0x14]
mov edx, dword [ebx + 0x18]
mov eax, dword [ebx + 0xc]
push esi
mov esi, dword [ebx + 8]
push edi
xor edi, edi
cmp esi, 7
mov dword [ebp - 0x3c], ecx
mov dword [ebp - 0x38], edx
mov dword [ebp - 0x24], edi
mov dword [ebp - 0x20], edi
mov dword [ebp - 0x1c], edi
jge 0x108fd65
cmp dword [ebx + 0x10], 7
jge 0x108fd65
cmp ecx, edi
jne 0x108f87e
mov dword [ebp - 0x18], 0x80070057
jmp 0x108fd71
cmp edx, edi
je 0x108f872
call fcn.01077ff4
pushal
add byte [eax], al
add byte [eax + 0x5f602c1e], cl
adc al, 0x23
add byte [esi + ebx + 0x4d8d202c], 0xe0
push ecx
push eax
call fcn.01040908
cmp eax, edi
mov dword [ebp - 0x18], eax
jl 0x108fd71
imul esi, esi, 7
add esi, dword [ebx + 0x10]
cmp esi, 0x11
jg 0x108fb59
call fcn.01077ff4
lodsd eax, dword [esi]
add byte [eax], al
and byte [esi + edi*4 - 0x23120fd5], dl
sub byte [eax], dl
nop
mov esi, 0x840f902b
imul eax, dword [edx], 0
add byte [ebx - 0x70f0f902], al
add byte [ecx], al
add byte [eax], al
je 0x108f9b2
sub esi, edi
je 0x108f986
dec esi
je 0x108f956
call fcn.01254918
sub eax, 0x1c200000
add al, 0x2d
and byte [eax], 4
sub eax, 0x7160bd0
jo 0x108f954
dec esi
je 0x108f93e
call fcn.0121d60e
nop
mov esp, 0x12ed702b
sub dword [eax - 5], edx
add dword [eax], eax
add byte [esp + edi*4 + 0x4e4e002b], cl
jne 0x108fba0
mov ecx, dword [ebp - 0x20]
mov eax, dword [0x12d4320]
mov edx, dword [eax]
lea esi, [ebp - 0x1c]
push esi
push ecx
push eax
call dword [edx + 0x60]
jmp 0x108fbfb
mov ecx, dword [ebp - 0x20]
mov eax, dword [0x12d4320]
mov edx, dword [eax]
lea esi, [ebp - 0x1c]
push esi
push ecx
push eax
call dword [edx + 0x54]
jmp 0x108fbfb
add byte [eax], al
mov ecx, dword [ebp - 0x20]
mov eax, dword [0x12d4320]
mov edx, dword [eax]
lea esi, [ebp - 0x1c]
push esi
push ecx
push eax
call dword [edx + 0x88]
call fcn.01031025
xchg esi, eax
push cs
inc eax
movsb byte es:[edi], byte [esi]
invalid
mov eax, dword [0x12d4320]
mov ecx, dword [eax]
lea edx, [ebp - 0x1c]
push edx
push eax
call dword [ecx + 0x84]
call fcn.0125bfba
jno 0x108f9ca
mov ah, 0x80
sbb dl, 6
push es
pushal
loopne 0x108f9b1
sub eax, 0x1640
nop
jmp 0x108fbfb
add byte [eax + 0x249e9], dl
add byte [ebx + 0x20a1e04d], cl
inc ebx
sub eax, 0x8d108b01
jne 0x108f9a3
mov ecx, dword [ebp - 0x20]
mov eax, dword [0x12d4320]
mov edx, dword [eax]
lea esi, [ebp - 0x1c]
push esi
push ecx
push eax
call dword [edx + 0x64]
call fcn.0121067f
sbb eax, 0x220020d6
add byte [eax], al
loopne 0x108f9ab
dec ecx
sub al, 0xd0
aam 0x49
sub al, 0xf0
jmp 0x108fbfb
mov dword [ebp - 0x18], 0xc004f012
jmp 0x108fd71
call fcn.012049f6
invalid
add al, al
in al, 0xad
sub edx, eax
sub esi, 0x17
je 0x108fbd2
call fcn.0121067f
pop esi
adc al, 0x22
add byte [edi], 0
add byte [eax], ah
jl 0x108fbc7
sub al, 0x50
js 0x108fbcb
sub al, 0xd0
dec esi
je 0x108fbc1
call fcn.012049f6
push eax
mov gs, word [eax + eax]
push esp
mov gs, word [eax + esi*2]
insd dword es:[edi], dx
add byte [eax], al
mov al, 0x81
push cs
loopne 0x108fb7d
inc ebp
call 0xc10debd2
jmp 0x108fd71
mov eax, dword [0x12d4320]
mov ecx, dword [eax]
lea edx, [ebp - 0x1c]
or byte [ebp + 0x5052e455], cl
push edx
push eax
call dword [ecx + 0x40]
jmp 0x108fbfb
call fcn.01296fd1
aas
add byte [eax], al
xor byte [eax + 0x66], ah
sub al, 0xd0
fnstcw word [edi + 0x6664801d]
sub al, 0xd0
mov ecx, dword [ebp - 0x20]
mov eax, dword [0x12d4320]
mov edx, dword [eax]
push edi
lea esi, [ebp - 0x1c]
push esi
push ecx
push eax
call dword [edx + 0x48]
cmp eax, edi
mov dword [ebp - 0x18], eax
jl 0x108fd71
call fcn.01031025
jg 0x108fc6a
pop es
inc eax
nop
daa
sub eax, 0x2d278c80
adc byte [esi], bl
add byte [eax], al
mov eax, dword [ebp - 0x1c]
cmp eax, edi
je 0x108faab
mov ecx, dword [eax]
lea edx, [ebp - 0x34]
push edx
push eax
call dword [ecx + 0xc]
call fcn.01031025
enter 0x16ab, 0xffffffffffffffa0
clc
enter 0x702c, 0xfffffffffffffff4
enter 0x602c, 0x16
add byte [eax], al
push eax
call fcn.0125bfba
pushal
stosd dword es:[edi], eax
mov al, 0xc0
lodsb al, byte [esi]
js 0x108fc73
mov al, 0xdc
sub ch, byte [eax]
cli
add byte [eax], al
push eax
cmp eax, edi
mov dword [ebp - 0x18], eax
jl 0x108fd71
mov ecx, dword [ebp - 0x34]
cmp ecx, edi
jbe 0x108faab
mov eax, ecx
shl eax, 4
loopne 0x108fc79
mov edx, eax
shr edx, 4
cmp edx, ecx
jne 0x108fc8c
add al, 0x3b
sal dword [ebp + 0xe], 1
push eax
push 0x40
call dword [sym.imp.KERNEL32.dll_LocalAlloc]
mov dword [ebp - 0x28], eax
jmp 0x108fca4
call fcn.01254918
das
add byte [eax], al
mov al, byte [0x202d0d70]
je 0x108fca8
sub eax, 0x6d33180
nop
mov dword [ebp - 0x28], edi
call fcn.0121d60e
or al, 0x2b
add byte [ebx + ebp], cl
sub al, 0x30
js 0x108fcd2
adc byte [edi], ch
add byte [eax], al
add byte [eax], cl
sub ebp, dword [eax + eax]
lea ecx, [ebp - 0x24]
call fcn.0103a949
call fcn.01031025
scasb al, byte es:[edi]
jae 0x108fd0f
pushal
mov al, byte [0x9c502c1b]
sbb ebp, dword [eax + edx*8]
call 0x8c08fcd8
inc ebp
fdivr dword [ebx]
invalid
in al, 0x54
sub al, 0x70
mov dword [ebp - 0x24], edi
mov dword [ebp - 0x18], 0x8007000e
jmp 0x108fd71
mov eax, dword [ebp - 0x1c]
mov ecx, dword [eax]
lea edx, [ebp - 0x50]
push edx
push dword [ebp - 0x2c]
inc ebp
in al, 0x8b
or byte [ebp - 0xad4fab], cl
jne 0x108fcee
push eax
call dword [ecx + 0x10]
cmp eax, edi
mov dword [ebp - 0x18], eax
jl 0x108fd71
lea eax, [ebp - 0x14]
push eax
push dword [ebp - 0x50]
call fcn.0103b3f4
cmp eax, edi
mov dword [ebp - 0x18], eax
jl 0x108fd71
mov edi, dword [ebp - 0x30]
inc dword [ebp - 0x2c]
add dword [ebp - 0x30], 0x10
lea esi, [ebp - 0x14]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
mov ecx, dword [ebp - 0x34]
xor edi, edi
cmp dword [ebp - 0x2c], ecx
jb 0x108fd0e
mov eax, dword [ebp - 0x3c]
mov dword [eax], ecx
mov eax, dword [ebp - 0x38]
mov ecx, dword [ebp - 0x28]
mov dword [ebp - 0x24], edi
mov dword [eax], ecx
jmp 0x108fd6c
mov dword [ebp - 0x18], 0x80070057
cmp dword [ebp - 0x18], edi
jge 0x108fdc2
call fcn.0121d60e
jo 0x108fdb4
sub al, 0x30
or eax, 0x740218d
add byte [eax], al
mov al, byte [0x702c3c6c]
mov eax, dword [0x12d2c30]
cmp eax, 0x12d2c30
je 0x108fdc2
test byte [eax + 0x3c], 2
je 0x108fdc2
call fcn.012049f6
xor al, 0x13
sub eax, 0x2d133870
shr byte [edx + eax - 0x6f314000], 5
mov al, 0xff
jne 0x108fd98
push 0x10067c0
push 0x14
add dword [edx + 0x14], ebp
push dword [eax + 0x34]
push dword [eax + 0x30]
call fcn.01032571
call fcn.01296fd1
push es
add byte [eax], al
mov al, byte [0x2ccd5c]
aaa
or esi, dword [eax + 0x60]
int 0x2c
nop
lea ecx, [ebp - 0x1c]
call fcn.0103a83a
lea ecx, [ebp - 0x20]
call fcn.0103a781
lea ecx, [ebp - 0x24]
call fcn.0103a949
mov ecx, dword [ebp - 4]
mov eax, dword [ebp - 0x18]
pop edi
xor ecx, ebp
pop esi
call fcn.0128e47a
mov esp, ebp
pop ebp
mov esp, ebx
pop ebx
ret 0x14