Function at 0x100ec780
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff0
sub esp, 0x170
mov esi, esp
mov dword [esi + 0x158], ebp
mov dword [esi + 0x15c], esp
mov dword [esi + 0x168], 0xffffffff
mov dword [esi + 0x164], 0x100eeed0
mov eax, dword fs:[0]
mov dword [esi + 0x160], eax
lea eax, [esi + 0x160]
mov dword fs:[0], eax
lea eax, [ecx + 0x70]
mov dword [esi + 0x44], eax
mov dword [esi + 8], ecx
jmp 0x100ec7fc
add eax, 0x24
mov edi, eax
mov ecx, edx
push edi
push ecx
call fcn.101ac81b
add esp, 8
mov ecx, dword [esi + 8]
test bl, bl
je 0x100ed14f
mov edx, dword [ecx + 0x28]
mov edi, dword [ecx + 0x2c]
mov dword [esi + 0x18], edi
sub edi, edx
cmp edi, 2
jb 0x100ed0e1
mov dword [esi + 0x1c], edi
movzx eax, byte [edx]
mov ecx, eax
shr cl, 7
mov byte [esi + 0x4c], cl
mov bh, al
shr bh, 6
and bh, 1
mov byte [esi + 0x4d], bh
mov ecx, eax
shr cl, 5
and cl, 1
mov byte [esi + 0x4e], cl
mov bl, al
shr bl, 4
and bl, 1
mov byte [esi + 0x4f], bl
and eax, 0xf
mov dword [esi + 0x54], eax
movzx eax, byte [edx + 1]
mov ch, al
mov dword [esi + 0x10], edx
mov dword [esi + 0xc], eax
shr ch, 7
and eax, 0x7f
xor edx, edx
cmp al, 0x7e
sete dl
mov dword [esi + 0x14], edx
xor edx, edx
cmp al, 0x7f
sete dl
shl edx, 3
mov edi, dword [esi + 0x14]
lea edx, [edx + edi*2]
mov byte [esi + 0x50], ch
mov dword [esi + 0x58], eax
mov eax, dword [esi + 0xc]
shr eax, 7
lea eax, [edx + eax*4]
add eax, 2
mov edx, dword [esi + 0x10]
mov dword [esi + 0x48], eax
cmp dword [esi + 0x1c], eax
jb 0x100ed0e1
test bh, bh
jne 0x100ec8b0
test cl, cl
mov ecx, dword [esi + 8]
jne 0x100ed12a
test bl, bl
je 0x100ec8d6
jmp 0x100ed12a
mov ecx, dword [esi + 8]
test byte [ecx + 0x13d], 1
je 0x100ed12a
cmp byte [esi + 0x4e], 0
jne 0x100ed12a
movzx ebx, byte [esi + 0x4f]
test bl, bl
jne 0x100ed12a
mov edi, dword [esi + 0x58]
cmp edi, 0x7d
jg 0x100ec8f0
mov eax, edi
sar eax, 0x1f
mov dword [esi + 0xc], eax
mov edx, 2
jmp 0x100ec932
cmp edi, 0x7f
je 0x100ec920
cmp edi, 0x7e
jne 0x100ed14f
movzx edi, word [edx + 2]
bswap edi
shr edi, 0x10
mov dword [esi + 0xc], 0
mov edx, 4
jmp 0x100ec932
mov eax, dword [edx + 2]
mov edi, dword [edx + 6]
bswap eax
mov dword [esi + 0xc], eax
bswap edi
mov edx, 0xa
mov dword [esi + 0x60], edi
mov eax, dword [esi + 0xc]
mov dword [esi + 0x64], eax
movzx eax, byte [esi + 0x50]
mov byte [esi + 0x1c], al
test al, al
je 0x100ec970
mov ebx, dword [esi + 0x10]
movzx eax, byte [ebx + edx]
mov byte [esi + 0x68], al
mov eax, edx
or eax, 1
movzx eax, byte [ebx + eax]
mov byte [esi + 0x69], al
movzx eax, byte [ebx + edx + 2]
mov byte [esi + 0x6a], al
movzx eax, byte [ebx + edx + 3]
jmp 0x100ec97c
mov word [esi + 0x68], 0
mov byte [esi + 0x6a], 0
xor eax, eax
mov byte [esi + 0x6b], al
mov eax, edi
neg eax
mov eax, 0x80000000
sbb eax, dword [esi + 0xc]
jb 0x100ed14f
mov eax, edi
mov edi, dword [ecx + 0x28]
mov edx, dword [ecx + 0x2c]
mov dword [esi + 0x18], edi
sub edx, edi
mov ebx, dword [esi + 0x48]
mov edi, eax
mov ecx, ebx
mov dword [esi + 0x14], ebx
add edi, ebx
mov ecx, dword [esi + 0xc]
adc ecx, 0
cmp edx, edi
mov edi, dword [esi + 8]
mov edx, 0
sbb edx, ecx
jb 0x100ed14f
mov dword [esi + 0x10], eax
cmp byte [esi + 0x4c], 0
jne 0x100ec9da
mov ecx, dword [esi + 0x54]
add ecx, 0xfffffff8
cmp ecx, 2
jbe 0x100ed1bf
cmp byte [esi + 0x1c], 0
je 0x100eca20
mov ecx, dword [esi + 0x10]
or ecx, dword [esi + 0xc]
mov ebx, dword [esi + 0x18]
je 0x100eca23
xor eax, eax
mov ebx, dword [esi + 0x14]
mov ecx, eax
and ecx, 3
movzx ecx, byte [esi + ecx + 0x68]
mov edx, dword [edi + 0x28]
add edx, ebx
xor byte [eax + edx], cl
inc eax
mov ecx, dword [esi + 0x10]
xor ecx, eax
or ecx, dword [esi + 0xc]
jne 0x100ec9f0
mov ebx, dword [edi + 0x28]
jmp 0x100eca23
mov ebx, dword [esi + 0x18]
xorps xmm0, xmm0
movaps xmmword [esi + 0x20], xmm0
mov dword [esi + 0x34], 0
mov dword [esi + 0x30], 0
mov eax, dword [esi + 0x10]
test eax, eax
mov ecx, dword [esi + 0x14]
je 0x100eca60
add ebx, ecx
lea edx, [ebx + eax]
mov dword [esi + 0x168], 0xffffffff
lea ecx, [esi + 0x20]
push eax
push edx
push ebx
call fcn.100d7380
jmp 0x100eca6b
mov dword [esi + 0x34], 0xf
mov byte [esi + 0x20], 0
mov eax, dword [esi + 0x54]
cmp eax, 2
ja 0x100ecad0
test eax, eax
je 0x100ecb21
xor ecx, ecx
cmp eax, 1
setne cl
mov dword [edi + 0x78], ecx
movzx eax, byte [edi + 0x13d]
and al, byte [esi + 0x4d]
and al, 1
mov byte [edi + 0x7c], al
cmp dword [edi + 0x74], 0
je 0x100ecb50
mov dword [esi + 0x168], 0
movzx eax, word [0x104c3580]
mov ecx, edi
push 0
push 0
push 0x105dc250
push eax
call fcn.100ec2d0
mov edi, dword [esi + 8]
jmp 0x100ecb50
cmp eax, 8
je 0x100eccb0
cmp eax, 0xa
je 0x100ecd50
cmp eax, 9
jne 0x100ecd7c
cmp dword [esi + 0x30], 0x7e
jb 0x100ecdf9
mov dword [esi + 0x168], 0
movzx eax, word [0x104c3580]
mov ecx, edi
push 0
push 0
push 0x105dc220
push eax
call fcn.100ec2d0
mov ecx, dword [esi + 8]
xor ebx, ebx
jmp 0x100ed0ad
cmp dword [edi + 0x74], 0
jne 0x100ecb50
mov dword [esi + 0x168], 0
movzx eax, word [0x104c3580]
mov ecx, edi
push 0
push 0
push 0x105dc268
push eax
call fcn.100ec2d0
mov edi, dword [esi + 8]
nop dword [eax]
movzx ecx, byte [esi + 0x4c]
mov eax, dword [edi + 0x74]
mov dword [esi + 0x168], 0
test cl, cl
je 0x100ecb90
test eax, eax
jne 0x100ecb90
movzx eax, byte [edi + 0x7c]
mov ecx, edi
push dword [ebp + 0xc]
push eax
lea eax, [esi + 0x20]
push eax
push dword [edi + 0x78]
call fcn.100ed310
mov edi, dword [esi + 8]
mov byte [edi + 0x7c], 0
jmp 0x100ed080
mov byte [esi + 0xc], cl
mov ecx, dword [esi + 0x44]
lea eax, [esi + 0x20]
push eax
push dword [ecx]
call fcn.100ee330
mov ecx, dword [esi + 8]
cmp byte [esi + 0xc], 0
je 0x100ecdab
movzx eax, byte [ecx + 0x7c]
mov byte [esi + 0xc], al
lea eax, [esi + 0xa0]
push eax
call fcn.100ed4b0
mov ecx, dword [esi + 8]
mov eax, dword [ecx + 0x78]
mov dword [esi + 0x168], 4
movzx edx, byte [esi + 0xc]
push dword [ebp + 0xc]
push edx
lea edx, [esi + 0xa0]
push edx
push eax
call fcn.100ed310
mov eax, dword [esi + 0xb4]
cmp eax, 0x10
jb 0x100ecc24
mov ecx, dword [esi + 0xa0]
lea edi, [eax + 1]
cmp edi, 0x1000
jb 0x100ecc1a
mov edx, dword [ecx - 4]
add ecx, 0xfffffffc
sub ecx, edx
cmp ecx, 0x20
jae 0x100ed0dc
add eax, 0x24
mov edi, eax
mov ecx, edx
push edi
push ecx
call fcn.101ac81b
add esp, 8
mov eax, dword [esi + 0x44]
mov eax, dword [eax]
mov ecx, dword [eax + 4]
mov dword [ecx], 0
mov edi, dword [eax]
test edi, edi
jne 0x100ecc83
mov edi, dword [esi + 8]
mov eax, dword [edi + 0x70]
mov dword [eax], eax
mov eax, dword [edi + 0x70]
mov dword [eax + 4], eax
mov dword [edi + 0x74], 0
mov byte [edi + 0x7c], 0
jmp 0x100ed080
add eax, 0x24
mov edx, eax
mov ecx, dword [esi + 0xc]
push edx
push ecx
call fcn.101ac81b
add esp, 8
push 0x20
push edi
call fcn.101ac81b
add esp, 8
mov edi, ebx
test ebx, ebx
je 0x100ecc38
mov ebx, dword [edi]
mov eax, dword [edi + 0x1c]
cmp eax, 0x10
jb 0x100ecc72
mov ecx, dword [edi + 8]
lea edx, [eax + 1]
cmp edx, 0x1000
jb 0x100ecc68
mov edx, dword [ecx - 4]
add ecx, 0xfffffffc
mov dword [esi + 0xc], edx
sub ecx, edx
cmp ecx, 0x20
jb 0x100ecc60
jmp 0x100ed0dc
xorps xmm0, xmm0
movaps xmmword [esi + 0x70], xmm0
mov dword [esi + 0x80], 0
mov dword [esi + 0x84], 0xf
mov ecx, dword [esi + 0x10]
cmp ecx, 2
mov eax, dword [esi + 0xc]
sbb eax, 0
jb 0x100ece92
xor ecx, 2
or ecx, dword [esi + 0xc]
mov eax, dword [edi + 0x28]
mov ecx, dword [esi + 0x14]
movzx eax, word [eax + ecx]
mov dword [esi + 0xc], eax
mov dword [esi + 0x168], 1
je 0x100ecd2d
lea ecx, [esi + 0xa0]
lea eax, [esi + 0x88]
push eax
push dword [esi + 0x30]
push 2
lea eax, [esi + 0x20]
push eax
call fcn.100066a0
lea ecx, [esi + 0x70]
lea edi, [esi + 0xa0]
push edi
call fcn.100320a0
mov ecx, edi
call fcn.10002320
lea eax, [esi + 0x70]
push eax
call fcn.100eda20
add esp, 4
mov edi, dword [esi + 8]
mov edx, dword [esi + 0xc]
test al, al
je 0x100eceb7
rol dx, 8
jmp 0x100eced0
mov al, 1
xchg byte [edi + 0x238], al
mov dword [esi + 0x168], 0
mov ecx, edi
push dword [ebp + 0xc]
push 0
lea eax, [esi + 0x20]
push eax
push 3
call fcn.100ed310
mov edi, dword [esi + 8]
jmp 0x100ed080
mov eax, dword [edi + 0x2c]
sub eax, dword [edi + 0x28]
mov dword [esi + 0x168], 0
movzx edx, word [0x104c3580]
mov ecx, edi
push 0
push eax
push 0x10585dd4
push edx
call fcn.100ec2d0
mov edi, dword [esi + 8]
jmp 0x100ed080
xorps xmm0, xmm0
movaps xmmword [esi + 0xa0], xmm0
mov dword [esi + 0xb0], 0
mov dword [esi + 0xb4], 0xf
mov dword [esi + 0x168], 5
push dword [ebp + 0xc]
push 0
lea eax, [esi + 0xa0]
push eax
push 4
call fcn.100ed310
lea ecx, [esi + 0xa0]
call fcn.10002320
mov edi, dword [esi + 8]
jmp 0x100ed080
test byte [edi + 0x230], 1
je 0x100ece6e
mov dword [esi + 0xc4], 0
cmp dword [esi + 0x34], 0x10
lea eax, [esi + 0x20]
lea edx, [esi + 0xa0]
jb 0x100ece1e
mov eax, dword [esi + 0x20]
mov ecx, dword [esi + 0x30]
mov dword [esi + 0x88], eax
mov dword [esi + 0x8c], ecx
mov dword [esi + 0x168], 3
mov ecx, edi
push edx
push 0
lea eax, [esi + 0x88]
push eax
push 0xa
lea eax, [esi + 0x70]
push eax
call fcn.100ed640
mov ecx, dword [esi + 0xc4]
test ecx, ecx
lea edx, [esi + 0xa0]
je 0x100ece6b
xor eax, eax
cmp ecx, edx
setne al
mov edx, dword [ecx]
push eax
call dword [edx + 0x10]
mov edi, dword [esi + 8]
mov dword [esi + 0x168], 0
mov ecx, edi
push dword [ebp + 0xc]
push 0
lea eax, [esi + 0x20]
push eax
push 2
call fcn.100ed310
mov edi, dword [esi + 8]
jmp 0x100ed080
mov dword [esi + 0x168], 1
lea ecx, [esi + 0x70]
push 0x10585dec
call fcn.100d70d0
mov edi, dword [esi + 8]
movzx eax, word [0x104c3582]
mov edx, eax
jmp 0x100ecf04
lea ecx, [esi + 0x70]
push 0x105dc280
call fcn.100d70d0
mov edi, dword [esi + 8]
movzx eax, word [0x104c357e]
mov edx, eax
lea eax, [edx - 0x3f6]
movzx eax, ax
movzx ecx, dx
cmp eax, 0x7c2
jb 0x100ecf7c
cmp ecx, 0x3e8
jb 0x100ecf7c
mov eax, edx
and eax, 0xfffd
movzx eax, ax
cmp eax, 0x3ec
je 0x100ecf7c
cmp dword [edi + 0xb4], 0
je 0x100ed024
cmp dword [edi + 0xb4], 0
je 0x100ecf2c
xor eax, eax
xchg dword [edi + 0xb4], eax
mov dword [esi + 0x168], 1
mov dword [esi + 0x168], 1
movzx edx, dx
mov ecx, edi
lea eax, [esi + 0x70]
push eax
mov dword [esi + 0xc], edx
push edx
call fcn.100eda70
mov ecx, dword [esi + 8]
push dword [0x104c2e34]
push dword [0x104c2e30]
call fcn.100edc40
mov ecx, dword [esi + 8]
mov eax, dword [ecx + 0x2c]
sub eax, dword [ecx + 0x28]
push 1
push eax
lea eax, [esi + 0x70]
push eax
push dword [esi + 0xc]
call fcn.100edd10
mov edi, dword [esi + 8]
jmp 0x100ed076
mov dword [esi + 0xc], ecx
lea ecx, [esi + 0xa0]
push 1
call fcn.10004e70
mov eax, 0x105dc298
cmp dword [0x105dc2ac], 0x10
jb 0x100ecf9f
mov eax, dword [0x105dc298]
mov ecx, dword [0x105dc2a8]
mov dword [esi + 0x168], 2
push ecx
push eax
lea eax, [esi + 0xb0]
push eax
call fcn.10064a20
add esp, 0xc
push 0x1053a24a
push eax
call fcn.10005610
add esp, 8
mov ecx, eax
push dword [esi + 0xc]
call fcn.10005a10
lea ecx, [esi + 0xa0]
lea eax, [esi + 0x88]
push eax
call fcn.10005410
lea ecx, [esi + 0x70]
lea edi, [esi + 0x88]
push edi
call fcn.100320a0
mov ecx, edi
call fcn.10002320
lea ecx, [esi + 0xa0]
call fcn.10005550
movzx eax, word [0x104c3580]
mov edx, eax
mov edi, dword [esi + 8]
cmp dword [edi + 0xb4], 0
jne 0x100ecf11
movzx eax, word [edi + 0x128]
cmp ax, dx
jne 0x100ed076
mov dword [esi + 0x168], 1
mov ecx, edi
mov dword [esi + 0xc], edx
call fcn.100eb2e0
mov ebx, dword [esi + 0xc]
mov edi, dword [esi + 8]
lea ecx, [esi + 0x70]
push ecx
push eax
call fcn.100e7130
add esp, 8
test al, al
je 0x100ed076
mov eax, dword [edi + 0x2c]
sub eax, dword [edi + 0x28]
movzx edx, bx
mov ecx, edi
push 0
push eax
lea eax, [esi + 0x70]
push eax
push edx
call fcn.100edd10
mov edi, dword [esi + 8]
lea ecx, [esi + 0x70]
call fcn.10002320
nop
mov ecx, edi
mov edi, dword [edi + 0x28]
mov eax, dword [esi + 0x48]
add eax, edi
add eax, dword [esi + 0x60]
mov bl, 1
cmp edi, eax
je 0x100ed0ad
mov ebx, dword [ecx + 0x2c]
sub ebx, eax
push ebx
push eax
push edi
call fcn.10368490
add esp, 0xc
add ebx, edi
mov ecx, dword [esi + 8]
mov dword [ecx + 0x2c], ebx
mov bl, 1
mov eax, dword [esi + 0x34]
cmp eax, 0x10
jb 0x100ec7f4
mov ecx, dword [esi + 0x20]
lea edi, [eax + 1]
cmp edi, 0x1000
jb 0x100ec7e7
mov edx, dword [ecx - 4]
add ecx, 0xfffffffc
sub ecx, edx
cmp ecx, 0x20
jb 0x100ec7e0
call fcn.10378384
cmp dword [ebp + 8], 0
mov edi, dword [esi + 8]
je 0x100ed14f
cmp edx, dword [esi + 0x18]
je 0x100ed0f2
mov dword [edi + 0x2c], edx
cmp dword [edi + 0xb4], 0
je 0x100ed165
mov eax, dword [edi + 0xb4]
cmp eax, 1
je 0x100ed14f
movzx eax, word [0x104c357c]
mov dword [esi + 0x168], 0xffffffff
mov ecx, edi
push 0
push 0
push 0x105dc1f0
push eax
call fcn.100edd10
jmp 0x100ed14f
mov eax, dword [ecx + 0x2c]
sub eax, dword [ecx + 0x28]
movzx edx, word [0x104c3580]
mov dword [esi + 0x168], 0xffffffff
push 0
push eax
push 0x105dc208
push edx
call fcn.100ec2d0
mov eax, dword [esi + 0x160]
mov dword fs:[0], eax
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret 8
lea ebx, [edi + 0x84]
push ebx
call fcn.101ae27c
add esp, 4
test eax, eax
jne 0x100ed1e1
mov dword [esi + 0xc], ebx
cmp dword [edi + 0xb0], 0x7fffffff
je 0x100ed1f2
mov ecx, dword [edi + 0x80]
mov eax, dword [ecx]
mov eax, dword [eax + 0xc]
mov dword [esi + 0x168], 6
call eax
push dword [esi + 0xc]
call fcn.101ae28d
add esp, 4
mov dword [esi + 0x168], 0xffffffff
mov ecx, dword [esi + 8]
push 1
call fcn.100eb190
jmp 0x100ed14f
movzx eax, word [0x104c3580]
mov dword [esi + 0x168], 0xffffffff
mov ecx, edi
push 0
push 0
push 0x105dc238
push eax
jmp 0x100ed14a
mov dword [esi + 0x168], 0xffffffff
push 5
call fcn.101ad820
mov dword [edi + 0xb0], 0x7ffffffe
mov dword [esi + 0x168], 0xffffffff
push 6
call fcn.101ad820
nop dword [eax]
push ebp
sub esp, 0x14
lea esi, [ebp - 0x16c]
mov ebp, dword [esi + 0x158]
push dword [esi + 0xc]
call fcn.101ae28d
add esp, 0x18
pop ebp
ret