Function at 0x1000f090
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x4c
mov eax, dword [ecx + 0x10]
mov dword [ebp - 0x18], ecx
mov dword [ebp - 0x3c], eax
push ebx
push esi
push edi
cmp eax, 1
jne 0x1000f0b1
cmp dword [ecx + 0x5c], 7
je 0x1000f247
cmp dword [ecx + 0x8874], 0
jne 0x1000f247
cmp dword [ecx + 0x8870], 0
je 0x1000f247
mov eax, dword [ecx + 0x855c]
mov esi, dword [ecx + 0x85b8]
mov edi, dword [ecx + 0x8614]
mov edx, edi
mov dword [ebp - 8], eax
mov ecx, 0x10
neg eax
sbb eax, eax
shl edx, 4
and eax, 3
add edx, 0xfffffff0
mov dword [ebp - 0x28], eax
mov eax, dword [esi + 0x24]
sub eax, edx
inc eax
cmp eax, ecx
cmovb ecx, eax
mov eax, dword [esi + 0x1c]
inc eax
mov dword [ebp - 0x14], ecx
mov ecx, dword [esi + 0x20]
xor ebx, ebx
and ecx, 0xf
mov dword [ebp - 0x1c], eax
mov eax, dword [esi + 0x18]
cmp edx, dword [esi + 0x20]
mov dword [ebp - 0xc], eax
mov eax, dword [ebp - 0x18]
cmovbe ebx, ecx
xor ecx, ecx
mov dword [ebp - 0x10], ebx
mov edx, dword [eax + 0xc]
cmp edx, 4
sete cl
shl edi, 6
add ecx, 3
add ecx, dword [eax + 0x18]
mov dword [ebp - 0x30], ecx
mov ecx, dword [eax + 0x8870]
mov ecx, dword [ecx + 0x86dc]
mov dword [ebp - 0x24], ecx
mov cl, byte [eax + 0x808c]
mov al, byte [eax + 0x808d]
mov byte [ebp - 2], al
mov eax, dword [esi + 0x28]
mov dword [ebp - 0x2c], eax
mov eax, dword [esi + 0x2c]
add eax, edi
mov byte [ebp - 1], cl
mov dword [ebp - 0x20], eax
cmp edx, 7
je 0x1000f17a
cmp edx, 4
jne 0x1000f6d2
mov eax, dword [ebp - 0x3c]
cmp eax, 1
jne 0x1000f250
mov ecx, dword [ebp - 8]
mov eax, 0x80
mov edx, ecx
mov esi, 0x400
neg edx
sbb edx, edx
and edx, 4
test ecx, ecx
cmovne eax, esi
add edx, eax
mov dword [ebp - 0x3c], edx
cmp ebx, dword [ebp - 0x14]
jae 0x1000f247
mov edi, dword [ebp - 0x1c]
mov eax, ebx
mov edx, dword [ebp - 0xc]
shl eax, 4
mov dword [ebp - 8], eax
nop dword [eax]
mov ecx, dword [ebp - 0x20]
mov esi, edx
mov ecx, dword [ecx + ebx*4 - 0x40]
mov dword [ebp - 0x38], ecx
cmp edx, edi
jae 0x1000f234
mov ebx, dword [ebp - 8]
mov eax, esi
and eax, 0xf
movzx ecx, byte [eax + ebx + 0x101f08e0]
mov eax, esi
and eax, 0xfffffff0
shl eax, 4
add ecx, eax
mov eax, dword [ebp - 0x24]
mov edx, dword [eax + ecx*4]
add edx, dword [ebp - 0x3c]
mov ecx, dword [ebp - 0x28]
sar edx, cl
test edx, edx
jns 0x1000f200
xor edx, edx
jmp 0x1000f20e
cmp edx, 0xff
mov eax, 0xff
cmovg edx, eax
mov eax, dword [ebp - 0x2c]
mov ecx, dword [ebp - 0x18]
mov eax, dword [eax + esi*4]
inc esi
add eax, dword [ecx + 0x80a8]
add eax, dword [ebp - 0x38]
mov ecx, dword [ebp - 0x30]
mov byte [eax + ecx], dl
cmp esi, edi
jb 0x1000f1d3
mov ebx, dword [ebp - 0x10]
mov eax, dword [ebp - 8]
mov edx, dword [ebp - 0xc]
inc ebx
add eax, 0x10
mov dword [ebp - 0x10], ebx
mov dword [ebp - 8], eax
cmp ebx, dword [ebp - 0x14]
jb 0x1000f1c0
pop edi
pop esi
xor eax, eax
pop ebx
mov esp, ebp
pop ebp
ret
cmp eax, 2
jne 0x1000f336
mov eax, dword [ebp - 8]
mov edx, 0x12
test eax, eax
mov ecx, 0xf
cmovne ecx, edx
mov edx, 1
shl edx, cl
neg eax
sbb eax, eax
and eax, 4
add edx, eax
mov dword [ebp - 0x3c], edx
cmp ebx, dword [ebp - 0x14]
jae 0x1000f247
movzx eax, byte [ebp - 1]
mov edi, dword [ebp - 0x1c]
mov edx, dword [ebp - 0xc]
mov dword [ebp - 0x38], eax
mov eax, ebx
shl eax, 4
mov dword [ebp - 8], eax
nop dword [eax + eax]
mov ecx, dword [ebp - 0x20]
mov esi, edx
mov ecx, dword [ecx + ebx*4 - 0x40]
mov dword [ebp - 0x34], ecx
cmp edx, edi
jae 0x1000f31a
mov ebx, dword [ebp - 8]
mov eax, esi
and eax, 0xf
movzx ecx, byte [eax + ebx + 0x101f08e0]
mov eax, esi
and eax, 0xfffffff0
shl eax, 4
add ecx, eax
mov eax, dword [ebp - 0x24]
mov edx, dword [eax + ecx*4]
add edx, dword [ebp - 0x3c]
mov ecx, dword [ebp - 0x28]
sar edx, cl
mov ecx, dword [ebp - 0x38]
shl edx, cl
test edx, edx
jns 0x1000f2e5
xor edx, edx
jmp 0x1000f2f3
cmp edx, 0xffff
mov eax, 0xffff
cmovg edx, eax
mov eax, dword [ebp - 0x2c]
mov ecx, dword [eax + esi*4]
inc esi
mov eax, dword [ebp - 0x18]
add ecx, dword [ebp - 0x34]
add ecx, dword [ebp - 0x30]
mov eax, dword [eax + 0x80a8]
mov word [eax + ecx*2], dx
cmp esi, edi
jb 0x1000f2b3
mov ebx, dword [ebp - 0x10]
mov eax, dword [ebp - 8]
mov edx, dword [ebp - 0xc]
inc ebx
add eax, 0x10
mov dword [ebp - 0x10], ebx
mov dword [ebp - 8], eax
cmp ebx, dword [ebp - 0x14]
jb 0x1000f2a0
pop edi
pop esi
xor eax, eax
pop ebx
mov esp, ebp
pop ebp
ret
cmp eax, 3
jne 0x1000f40c
mov eax, dword [ebp - 8]
neg eax
sbb eax, eax
and eax, 4
mov dword [ebp - 8], eax
cmp ebx, dword [ebp - 0x14]
jae 0x1000f247
mov edi, dword [ebp - 0x1c]
mov edx, dword [ebp - 0xc]
movzx eax, cl
mov ecx, ebx
shl ecx, 4
mov dword [ebp - 0x3c], eax
mov dword [ebp - 0x34], ecx
nop dword [eax]
mov eax, dword [ebp - 0x20]
mov esi, edx
mov eax, dword [eax + ebx*4 - 0x40]
mov dword [ebp - 0x38], eax
cmp edx, edi
jae 0x1000f3f0
mov ebx, dword [ebp - 8]
mov eax, esi
and eax, 0xf
movzx ecx, byte [eax + ecx + 0x101f08e0]
mov eax, esi
and eax, 0xfffffff0
shl eax, 4
add ecx, eax
mov eax, dword [ebp - 0x24]
mov edx, dword [eax + ecx*4]
mov ecx, dword [ebp - 0x28]
add edx, ebx
sar edx, cl
mov ecx, dword [ebp - 0x3c]
shl edx, cl
cmp edx, 0xffff8000
jge 0x1000f3bb
mov edx, 0xffff8000
jmp 0x1000f3c9
cmp edx, 0x7fff
mov eax, 0x7fff
cmovg edx, eax
mov eax, dword [ebp - 0x2c]
mov ecx, dword [eax + esi*4]
inc esi
mov eax, dword [ebp - 0x18]
add ecx, dword [ebp - 0x38]
add ecx, dword [ebp - 0x30]
mov eax, dword [eax + 0x80a8]
mov word [eax + ecx*2], dx
mov ecx, dword [ebp - 0x34]
cmp esi, edi
jb 0x1000f383
mov ebx, dword [ebp - 0x10]
mov edx, dword [ebp - 0xc]
inc ebx
add ecx, 0x10
mov dword [ebp - 0x10], ebx
mov dword [ebp - 0x34], ecx
cmp ebx, dword [ebp - 0x14]
jb 0x1000f370
pop edi
pop esi
xor eax, eax
pop ebx
mov esp, ebp
pop ebp
ret
cmp eax, 4
jne 0x1000f4c8
mov eax, dword [ebp - 8]
neg eax
sbb eax, eax
and eax, 4
mov dword [ebp - 8], eax
cmp ebx, dword [ebp - 0x14]
jae 0x1000f247
mov edi, dword [ebp - 0x1c]
mov ecx, ebx
mov edx, dword [ebp - 0xc]
shl ecx, 4
mov dword [ebp - 0x34], ecx
nop dword [eax]
mov eax, dword [ebp - 0x20]
mov esi, edx
mov eax, dword [eax + ebx*4 - 0x40]
mov dword [ebp - 0x3c], eax
cmp edx, edi
jae 0x1000f4b0
mov ebx, dword [ebp - 8]
mov eax, esi
and eax, 0xf
movzx ecx, byte [eax + ecx + 0x101f08e0]
mov eax, esi
and eax, 0xfffffff0
shl eax, 4
add ecx, eax
mov eax, dword [ebp - 0x24]
mov edx, dword [eax + ecx*4]
mov ecx, dword [ebp - 0x28]
add edx, ebx
sar edx, cl
mov eax, edx
and edx, 0x7fff
sar eax, 0x1f
movzx eax, ax
xor edx, eax
sub edx, eax
mov eax, dword [ebp - 0x2c]
mov ecx, dword [eax + esi*4]
inc esi
mov eax, dword [ebp - 0x18]
add ecx, dword [ebp - 0x3c]
add ecx, dword [ebp - 0x30]
mov eax, dword [eax + 0x80a8]
mov word [eax + ecx*2], dx
mov ecx, dword [ebp - 0x34]
cmp esi, edi
jb 0x1000f453
mov ebx, dword [ebp - 0x10]
mov edx, dword [ebp - 0xc]
inc ebx
add ecx, 0x10
mov dword [ebp - 0x10], ebx
mov dword [ebp - 0x34], ecx
cmp ebx, dword [ebp - 0x14]
jb 0x1000f440
pop edi
pop esi
xor eax, eax
pop ebx
mov esp, ebp
pop ebp
ret
cmp eax, 6
jne 0x1000f57a
mov eax, dword [ebp - 8]
neg eax
sbb eax, eax
and eax, 4
mov dword [ebp - 8], eax
cmp ebx, dword [ebp - 0x14]
jae 0x1000f247
mov edi, dword [ebp - 0x1c]
mov edx, dword [ebp - 0xc]
movzx eax, cl
mov ecx, ebx
shl ecx, 4
mov dword [ebp - 0x3c], eax
mov dword [ebp - 0x34], ecx
nop dword [eax + eax]
mov eax, dword [ebp - 0x20]
mov esi, edx
mov eax, dword [eax + ebx*4 - 0x40]
mov dword [ebp - 0x38], eax
cmp edx, edi
jae 0x1000f562
mov ebx, dword [ebp - 8]
mov eax, esi
and eax, 0xf
movzx ecx, byte [eax + ecx + 0x101f08e0]
mov eax, esi
and eax, 0xfffffff0
shl eax, 4
add ecx, eax
mov eax, dword [ebp - 0x24]
mov edx, dword [eax + ecx*4]
mov eax, dword [ebp - 0x2c]
add edx, ebx
mov ecx, dword [ebp - 0x28]
sar edx, cl
mov ecx, dword [ebp - 0x3c]
shl edx, cl
mov ecx, dword [eax + esi*4]
inc esi
mov eax, dword [ebp - 0x18]
add ecx, dword [ebp - 0x38]
add ecx, dword [ebp - 0x30]
mov eax, dword [eax + 0x80a8]
mov dword [eax + ecx*4], edx
mov ecx, dword [ebp - 0x34]
cmp esi, edi
jb 0x1000f513
mov ebx, dword [ebp - 0x10]
mov edx, dword [ebp - 0xc]
inc ebx
add ecx, 0x10
mov dword [ebp - 0x10], ebx
mov dword [ebp - 0x34], ecx
cmp ebx, dword [ebp - 0x14]
jb 0x1000f500
pop edi
pop esi
xor eax, eax
pop ebx
mov esp, ebp
pop ebp
ret
cmp eax, 7
jne 0x1000f6d2
mov edx, dword [ebp - 8]
neg edx
sbb edx, edx
and edx, 4
mov dword [ebp - 8], edx
cmp ebx, dword [ebp - 0x14]
jae 0x1000f247
movzx eax, cl
mov edi, ebx
mov ecx, 0x17
mov dword [ebp - 0x38], eax
sub ecx, eax
mov eax, dword [ebp - 0x1c]
shl edi, 4
mov dword [ebp - 0x44], ecx
mov ecx, dword [ebp - 0xc]
mov dword [ebp - 0x34], edi
mov edx, dword [ebp - 0x20]
mov esi, ecx
mov dword [ebp - 0x3c], ecx
mov edx, dword [edx + ebx*4 - 0x40]
mov dword [ebp - 0x4c], edx
mov edx, dword [ebp - 8]
cmp ecx, eax
jae 0x1000f6b6
movsx eax, byte [ebp - 2]
mov ebx, 1
mov ecx, dword [ebp - 0x38]
shl ebx, cl
mov dword [ebp - 0x40], eax
mov eax, esi
and eax, 0xf
movzx ecx, byte [eax + edi + 0x101f08e0]
mov eax, esi
and eax, 0xfffffff0
shl eax, 4
add ecx, eax
mov eax, dword [ebp - 0x24]
mov eax, dword [eax + ecx*4]
mov ecx, dword [ebp - 0x28]
add eax, edx
sar eax, cl
mov ecx, eax
sar ecx, 0x1f
mov esi, ecx
mov dword [ebp - 0x48], ecx
xor esi, eax
lea eax, [ebx - 1]
sub esi, ecx
mov ecx, dword [ebp - 0x38]
mov edi, esi
and esi, eax
shr edi, cl
or esi, ebx
test edi, edi
jne 0x1000f62d
xor esi, ebx
mov edi, 1
mov eax, 0x7f
sub eax, dword [ebp - 0x40]
add edi, eax
cmp esi, ebx
jge 0x1000f650
nop dword [eax + eax]
cmp edi, 1
jle 0x1000f650
test esi, esi
jle 0x1000f650
add esi, esi
dec edi
cmp esi, ebx
jl 0x1000f640
mov ecx, dword [ebp - 0x44]
mov eax, esi
xor eax, ebx
mov edx, esi
cmp esi, ebx
cmovge edx, eax
xor eax, eax
shl edx, cl
cmp esi, ebx
mov esi, dword [ebp - 0x3c]
cmovge eax, edi
mov edi, dword [ebp - 0x34]
shl eax, 0x17
or edx, eax
mov eax, dword [ebp - 0x48]
and eax, 0x80000000
or edx, eax
mov eax, dword [ebp - 0x2c]
mov dword [ebp - 0x48], edx
movss xmm0, dword [ebp - 0x48]
mov edx, dword [ebp - 8]
mov ecx, dword [eax + esi*4]
inc esi
mov eax, dword [ebp - 0x18]
add ecx, dword [ebp - 0x4c]
add ecx, dword [ebp - 0x30]
mov dword [ebp - 0x3c], esi
mov eax, dword [eax + 0x80a8]
movss dword [eax + ecx*4], xmm0
mov eax, dword [ebp - 0x1c]
cmp esi, eax
jb 0x1000f5e2
mov ebx, dword [ebp - 0x10]
mov ecx, dword [ebp - 0xc]
inc ebx
add edi, 0x10
mov dword [ebp - 0x10], ebx
mov dword [ebp - 0x34], edi
cmp ebx, dword [ebp - 0x14]
jb 0x1000f5b7
pop edi
pop esi
xor eax, eax
pop ebx
mov esp, ebp
pop ebp
ret
pop edi
pop esi
or eax, 0xffffffff
pop ebx
mov esp, ebp
pop ebp
ret