Function at 0x101223f0
Capabilities:
Encode data using xor

Disassembly:
push 0xffffffffffffffff
push 0x10167d10
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0x2c
push ebx
push ebp
push esi
push edi
push 0xffffffffffffff92
push 0x53
push 0xffffffffffffffb1
push 0x15
mov esi, ecx
push 0xffffffffffffffab
call fcn.1011f180
push eax
push 0xffffffffffffffac
push 0x64
push 0x51
push 0xffffffffffffffe2
call fcn.1011f180
mov al, byte [esp + 0x74]
add esp, 0x28
lea ecx, [esp + 0x2c]
mov byte [esp + 0x2c], al
push 0
call fcn.1000ba10
mov cl, byte [esp + 0x4c]
mov dword [esp + 0x44], 0
mov byte [esp + 0x1c], cl
push 0
lea ecx, [esp + 0x20]
call fcn.1000ba10
lea edx, [esp + 0x2c]
lea eax, [esi + 0x14]
push edx
mov byte [esp + 0x48], 1
push eax
mov byte [0x1018ce30], 0x4d
call fcn.1011e4b0
mov bl, byte [0x1018ce31]
lea ecx, [esp + 0x24]
add esi, 0x24
dec bl
push ecx
push esi
mov byte [0x1018ce31], bl
call fcn.1011e4b0
mov eax, 0x1f5
add esp, 0x10
cdq
idiv dword [0x1018ce2c]
mov eax, dword [0x1018ce28]
push 1
push 0
mov byte [esp + 0x1b], 0x22
mov cl, byte [edx + eax]
lea edx, [esp + 0x1b]
mov byte [0x1018ce30], cl
push edx
mov ecx, esi
call fcn.10094080
cmp eax, dword [0x1016a3e8]
jne 0x101228d2
mov ebp, dword [esp + 0x4c]
mov bl, 3
test ebp, ebp
je 0x101225d4
mov dl, byte [0x1018ce30]
mov eax, dword [esp + 0x20]
inc dl
mov edi, 0x1016a1dc
test eax, eax
mov byte [0x1018ce30], dl
je 0x101224fb
mov edi, eax
mov esi, dword [esp + 0x30]
test esi, esi
jne 0x10122508
mov esi, 0x1016a1dc
mov al, 0x56
mov byte [esp + 0x14], 0x15
mov byte [esp + 0x15], al
mov byte [esp + 0x19], al
mov al, byte [0x10194f70]
mov byte [esp + 0x16], 0x4e
test al, 1
mov byte [esp + 0x17], 0x1f
mov byte [esp + 0x18], 7
mov byte [esp + 0x1a], 0x51
jne 0x1012255b
mov bl, al
lea eax, [esp + 0x14]
or bl, 1
push eax
mov ecx, 0x10194f74
mov byte [0x10194f70], bl
call fcn.101256c0
push 0x10122d90
call fcn.1013c36b
add esp, 4
mov ecx, dword [0x10194f74]
push edi
push esi
push ecx
push ebp
call fcn.1013ecf6
mov cl, byte [0x1018ce31]
add esp, 0x10
mov al, cl
neg al
push 0xffffffffffffffbc
push eax
mov eax, 0x1be
inc cl
cdq
idiv dword [0x1018ce2c]
mov eax, dword [0x1018ce28]
mov byte [0x1018ce31], cl
mov cl, byte [edx + eax]
push ecx
call fcn.1011ebf0
add esp, 8
push eax
push 0xffffffffffffff94
call fcn.1011ec00
mov bl, al
mov eax, 0x5e
cdq
idiv dword [0x1018ce2c]
mov eax, dword [0x1018ce28]
push 0xffffffffffffff81
push 0xffffffffffffffbc
mov cl, byte [edx + eax]
sub bl, cl
mov cl, byte [0x1018ce30]
push ecx
call fcn.100f7af0
add esp, 0x18
add bl, al
mov ebp, dword [esp + 0x54]
test ebp, ebp
je 0x10122cfb
mov eax, 0x11f
cdq
idiv dword [0x1018ce2c]
mov eax, dword [0x1018ce28]
mov cl, byte [edx + eax]
mov edx, dword [0x1016a3e8]
push edx
lea eax, [esp + 0x30]
mov byte [0x1018ce30], cl
push 0
push eax
mov ecx, ebp
call fcn.10094110
mov ecx, dword [0x1018ce2c]
mov eax, 0x3a5
cdq
idiv ecx
mov esi, dword [0x1018ce28]
push 0xfffffffffffffffa
mov eax, 0x3b6
mov dl, byte [edx + esi]
push edx
push 0x16
cdq
idiv ecx
mov al, byte [edx + esi]
push eax
push 0xffffffffffffffed
push 0xffffffffffffff87
push 0xffffffffffffffbd
call fcn.100f7af0
add esp, 0xc
push eax
call fcn.1011f180
mov byte [esp + 0x60], al
mov eax, 0x128
cdq
idiv dword [0x1018ce2c]
mov ecx, dword [0x1018ce28]
add esp, 0x14
mov dl, byte [edx + ecx]
push edx
push 0xfffffffffffffff9
push 0x1b
call fcn.1011ebf0
add esp, 8
push eax
mov eax, 0x142
cdq
idiv dword [0x1018ce2c]
mov eax, dword [0x1018ce28]
push 0xfffffffffffffffa
push 0xffffffffffffffcd
mov cl, byte [edx + eax]
mov dl, byte [0x1018ce31]
push ecx
push 0xffffffffffffff80
push edx
call fcn.1011f180
mov cl, 0x3f
add esp, 0x14
imul cl
sub bl, al
push ebx
push 0xffffffffffffffbc
push 0x3c
call fcn.1011ec20
mov bl, byte [esp + 0x60]
mov al, byte [0x1018ce30]
mov dl, 0x1b
sub dl, bl
push edx
push eax
call fcn.1011ebf0
mov al, byte [0x10194f78]
add esp, 0x1c
test al, 1
mov byte [esp + 0x4c], 0xd3
mov byte [esp + 0x4d], 0xcc
jne 0x10122735
mov bl, al
push 3
or bl, 1
mov byte [0x10194f78], bl
call fcn.1013c2df
add esp, 4
mov dword [0x10194f7c], eax
xor esi, esi
mov bl, byte [esp + esi + 0x4c]
push 0xee
movsx ecx, bl
push ecx
mov ecx, 0x10194f7c
call fcn.100a8ee0
mov edx, dword [0x10194f7c]
sub al, 0x12
xor al, bl
mov byte [esi + edx], al
inc esi
cmp esi, 2
jb 0x101226f5
mov eax, dword [0x10194f7c]
push 0x10122da0
mov byte [eax + 2], 0
call fcn.1013c36b
add esp, 4
mov edi, dword [0x10194f7c]
or ecx, 0xffffffff
xor eax, eax
mov dword [esp + 0x4c], edi
repne scasb al, byte es:[edi]
mov edx, dword [ebp + 8]
not ecx
dec ecx
mov esi, ecx
mov ecx, dword [0x1016a3e8]
sub ecx, edx
cmp ecx, esi
ja 0x1012275f
call fcn.101307ab
test esi, esi
jbe 0x1012279f
mov eax, dword [ebp + 8]
mov ebx, esi
add ebx, eax
push 0
push ebx
mov ecx, ebp
call fcn.1000be20
test al, al
je 0x1012279f
mov edi, dword [ebp + 8]
mov ecx, dword [ebp + 4]
add edi, ecx
mov ecx, esi
mov esi, dword [esp + 0x4c]
mov edx, ecx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov eax, dword [ebp + 4]
mov dword [ebp + 8], ebx
add ebx, eax
mov byte [ebx], 0
mov esi, dword [0x1018ce2c]
mov eax, 0x188
cdq
idiv esi
mov edi, dword [0x1018ce28]
mov eax, 0x18
push 0x60
push 0xffffffffffffffe6
mov cl, byte [edx + edi]
cdq
idiv esi
add cl, 0x1b
mov al, byte [edx + edi]
push eax
push ecx
call fcn.1011ec00
add esp, 0xc
push eax
push 0xffffffffffffffff
call fcn.1011ec00
mov ecx, dword [0x1016a3e8]
add esp, 0xc
lea edx, [esp + 0x1c]
push ecx
push 0
push edx
mov ecx, ebp
call fcn.10094110
mov al, byte [0x1018ce30]
push eax
push 0x46
push 0xffffffffffffffbc
call fcn.1011ec00
mov al, byte [0x10194f80]
add esp, 0xc
test al, 1
jne 0x10122857
mov cl, al
push 2
or cl, 1
mov byte [0x10194f80], cl
call fcn.1013c2df
add esp, 4
mov ecx, 0x10194f84
mov dword [0x10194f84], eax
push 3
push 0x1f
call fcn.1002ea10
mov edx, dword [0x10194f84]
mov cl, 0x22
sub cl, al
push 0x10122db0
mov byte [edx], cl
mov eax, dword [0x10194f84]
mov byte [eax + 1], 0
call fcn.1013c36b
add esp, 4
mov edi, dword [0x10194f84]
or ecx, 0xffffffff
xor eax, eax
mov dword [esp + 0x4c], edi
repne scasb al, byte es:[edi]
mov edx, dword [ebp + 8]
not ecx
dec ecx
mov esi, ecx
mov ecx, dword [0x1016a3e8]
sub ecx, edx
cmp ecx, esi
ja 0x10122881
call fcn.101307ab
test esi, esi
jbe 0x101228c1
mov eax, dword [ebp + 8]
mov ebx, esi
add ebx, eax
push 0
push ebx
mov ecx, ebp
call fcn.1000be20
test al, al
je 0x101228c1
mov edi, dword [ebp + 8]
mov ecx, dword [ebp + 4]
add edi, ecx
mov ecx, esi
mov esi, dword [esp + 0x4c]
mov edx, ecx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov eax, dword [ebp + 4]
mov dword [ebp + 8], ebx
add ebx, eax
mov byte [ebx], 0
push 0xffffffffffffffbd
push 0x47
call fcn.1011ebf0
add esp, 8
jmp 0x10122cfb
mov eax, 0xfa
cdq
idiv dword [0x1018ce2c]
mov eax, dword [0x1018ce28]
mov cl, byte [edx + eax]
mov dl, byte [0x1018ce30]
sub dl, 0x4c
push ecx
push edx
push 0xffffffffffffffbc
call fcn.100f7af0
mov cl, byte [0x1018ce31]
mov eax, dword [esp + 0x58]
add esp, 0xc
inc cl
test eax, eax
mov byte [0x1018ce31], cl
je 0x101229de
mov dl, byte [0x1018ce30]
mov eax, dword [esp + 0x20]
add dl, 0x4c
mov ebp, 0x1016a1dc
test eax, eax
mov byte [0x1018ce30], dl
je 0x10122933
mov ebp, eax
mov eax, dword [esp + 0x30]
mov edi, 0x1016a1dc
test eax, eax
je 0x10122942
mov edi, eax
mov al, 0xe9
mov dl, 0xe7
mov byte [esp + 0x17], al
mov byte [esp + 0x1a], al
mov al, byte [0x10194f88]
mov cl, 0x35
test al, 1
mov byte [esp + 0x14], dl
mov byte [esp + 0x15], cl
mov byte [esp + 0x16], 0xff
mov byte [esp + 0x18], dl
mov byte [esp + 0x19], cl
jne 0x101229c9
mov bl, al
push 8
or bl, 1
mov byte [0x10194f88], bl
call fcn.1013c2df
add esp, 4
mov dword [0x10194f8c], eax
xor esi, esi
mov bl, byte [esp + esi + 0x14]
push 0x3e
movsx eax, bl
push eax
mov ecx, 0x10194f8c
call fcn.1002ea10
mov ecx, dword [0x10194f8c]
sub bl, al
add bl, 0x3e
mov byte [esi + ecx], bl
inc esi
cmp esi, 7
jb 0x1012298a
mov edx, dword [0x10194f8c]
push 0x10122dc0
mov byte [edx + 7], 0
call fcn.1013c36b
add esp, 4
mov eax, dword [0x10194f8c]
mov ecx, dword [esp + 0x4c]
push ebp
push edi
push eax
push ecx
call fcn.1013ecf6
add esp, 0x10
mov ebp, dword [esp + 0x54]
test ebp, ebp
je 0x10122cfb
mov eax, dword [0x1016a3e8]
mov ecx, dword [esp + 0x34]
mov esi, eax
cmp ecx, esi
jae 0x101229fb
mov esi, ecx
sub eax, dword [ebp + 8]
cmp eax, esi
ja 0x10122a07
call fcn.101307ab
test esi, esi
jbe 0x10122a52
mov eax, dword [ebp + 8]
mov ebx, esi
add ebx, eax
push 0
push ebx
mov ecx, ebp
call fcn.1000be20
test al, al
je 0x10122a52
mov eax, dword [esp + 0x30]
test eax, eax
jne 0x10122a2d
mov eax, 0x1016a1dc
mov edi, dword [ebp + 8]
mov ecx, dword [ebp + 4]
add edi, ecx
mov ecx, esi
mov edx, ecx
mov esi, eax
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov eax, dword [ebp + 4]
mov dword [ebp + 8], ebx
add ebx, eax
mov byte [ebx], 0
mov eax, 0x1e1
push 0x1f
cdq
idiv dword [0x1018ce2c]
mov eax, dword [0x1018ce28]
push 0x49
mov cl, byte [edx + eax]
push ecx
call fcn.1011ebf0
mov dl, byte [0x1018ce31]
push eax
push edx
call fcn.1011ebf0
add esp, 0x10
push eax
push 0x44
call fcn.1011ec00
mov al, byte [0x10194f90]
add esp, 0xc
test al, 1
mov byte [esp + 0x4c], 0xd
mov byte [esp + 0x4d], 0x1a
jne 0x10122b01
mov bl, al
push 3
or bl, 1
mov byte [0x10194f90], bl
call fcn.1013c2df
add esp, 4
mov dword [0x10194f94], eax
mov ebx, 0x30
xor esi, esi
mov al, byte [esp + esi + 0x4c]
push ebx
movsx eax, al
push eax
mov ecx, 0x10194f94
call fcn.1004a650
mov ecx, dword [0x10194f94]
xor al, bl
xor al, byte [esp + esi + 0x4c]
mov byte [esi + ecx], al
mov eax, dword [0x10194f94]
movsx ebx, byte [esi + eax]
inc esi
cmp esi, 2
jb 0x10122abf
push 0x10122dd0
mov byte [eax + 2], 0
call fcn.1013c36b
add esp, 4
mov edi, dword [0x10194f94]
or ecx, 0xffffffff
xor eax, eax
mov dword [esp + 0x4c], edi
repne scasb al, byte es:[edi]
mov edx, dword [0x1016a3e8]
not ecx
dec ecx
mov esi, ecx
mov ecx, dword [ebp + 8]
sub edx, ecx
cmp edx, esi
ja 0x10122b2b
call fcn.101307ab
test esi, esi
jbe 0x10122b6b
mov eax, dword [ebp + 8]
mov ebx, esi
add ebx, eax
push 0
push ebx
mov ecx, ebp
call fcn.1000be20
test al, al
je 0x10122b6b
mov edi, dword [ebp + 8]
mov eax, dword [ebp + 4]
mov ecx, esi
mov esi, dword [esp + 0x4c]
add edi, eax
mov eax, ecx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov eax, dword [ebp + 4]
mov dword [ebp + 8], ebx
add ebx, eax
mov byte [ebx], 0
mov ecx, dword [0x1016a3e8]
mov eax, dword [esp + 0x24]
mov esi, ecx
cmp eax, esi
jae 0x10122b7d
mov esi, eax
sub ecx, dword [ebp + 8]
cmp ecx, esi
ja 0x10122b89
call fcn.101307ab
test esi, esi
jbe 0x10122bd4
mov eax, dword [ebp + 8]
mov ebx, esi
add ebx, eax
push 0
push ebx
mov ecx, ebp
call fcn.1000be20
test al, al
je 0x10122bd4
mov eax, dword [esp + 0x20]
test eax, eax
jne 0x10122baf
mov eax, 0x1016a1dc
mov edi, dword [ebp + 8]
mov ecx, dword [ebp + 4]
add edi, ecx
mov ecx, esi
mov edx, ecx
mov esi, eax
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov eax, dword [ebp + 4]
mov dword [ebp + 8], ebx
add ebx, eax
mov byte [ebx], 0
mov eax, 0x3a4
cdq
idiv dword [0x1018ce2c]
mov eax, dword [0x1018ce28]
mov dl, byte [edx + eax]
mov al, byte [0x1018ce31]
mov cl, al
sub cl, dl
dec al
mov byte [0x1018ce31], al
mov al, byte [0x10194f98]
test al, 1
mov byte [0x1018ce30], cl
jne 0x10122c52
mov cl, al
push 2
or cl, 1
mov byte [0x10194f98], cl
call fcn.1013c2df
mov ecx, eax
mov eax, 0x80
cdq
xor eax, edx
add esp, 4
sub eax, edx
mov dword [0x10194f9c], ecx
je 0x10122c35
sar eax, 2
jne 0x10122c30
sub al, 0x3b
push 0x10122de0
xor al, 0xe2
mov byte [ecx], al
mov edx, dword [0x10194f9c]
mov byte [edx + 1], 0
call fcn.1013c36b
add esp, 4
mov edi, dword [0x10194f9c]
or ecx, 0xffffffff
xor eax, eax
mov dword [esp + 0x4c], edi
repne scasb al, byte es:[edi]
mov eax, dword [0x1016a3e8]
mov edx, dword [ebp + 8]
not ecx
dec ecx
sub eax, edx
mov esi, ecx
cmp eax, esi
ja 0x10122c7b
call fcn.101307ab
test esi, esi
jbe 0x10122cfb
mov ecx, dword [ebp + 8]
mov ebx, esi
add ebx, ecx
cmp ebx, 0xfffffffd
jbe 0x10122c90
call fcn.101307ab
mov ecx, dword [ebp + 4]
test ecx, ecx
je 0x10122cb5
mov al, byte [ecx - 1]
test al, al
je 0x10122cb5
cmp al, 0xff
je 0x10122cb5
test ebx, ebx
jne 0x10122ccc
dec al
push ebx
mov byte [ecx - 1], al
mov ecx, ebp
call fcn.1000ba10
jmp 0x10122cfb
test ebx, ebx
jne 0x10122cc7
test ecx, ecx
je 0x10122cfb
push ebx
mov ecx, ebp
call fcn.1000be00
jmp 0x10122cfb
cmp dword [ebp + 0xc], ebx
jae 0x10122cd4
push ebx
mov ecx, ebp
call fcn.1000c9b0
mov edi, dword [ebp + 8]
mov eax, dword [ebp + 4]
mov ecx, esi
mov esi, dword [esp + 0x4c]
add edi, eax
mov eax, ecx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov eax, dword [ebp + 4]
mov dword [ebp + 8], ebx
add ebx, eax
mov byte [ebx], 0
mov eax, dword [esp + 0x20]
xor esi, esi
cmp eax, esi
mov byte [esp + 0x44], 0
je 0x10122d27
lea ecx, [eax - 1]
mov al, byte [eax - 1]
test al, al
je 0x10122d1e
cmp al, 0xff
je 0x10122d1e
dec al
mov byte [ecx], al
jmp 0x10122d27
push ecx
call fcn.101307a0
add esp, 4
mov ecx, dword [esp + 0x30]
mov dword [esp + 0x20], esi
mov dword [esp + 0x24], esi
mov dword [esp + 0x28], esi
pop edi
cmp ecx, esi
pop esi
pop ebp
mov dword [esp + 0x38], 0xffffffff
pop ebx
je 0x10122d72
mov al, byte [ecx - 1]
test al, al
je 0x10122d68
cmp al, 0xff
je 0x10122d68
dec al
mov byte [ecx - 1], al
mov ecx, dword [esp + 0x2c]
mov dword fs:[0], ecx
add esp, 0x38
ret 0xc
dec ecx
push ecx
call fcn.101307a0
add esp, 4
mov ecx, dword [esp + 0x2c]
mov dword fs:[0], ecx
add esp, 0x38
ret 0xc