Function at 0x10138f70
Capabilities:
Encode data using xor

Disassembly:
sub esp, 0x1bc
mov eax, dword [0x102060c0]
xor eax, esp
mov dword [esp + 0x1b4], eax
mov eax, dword [0x10223ca0]
push ebx
push ebp
push esi
cmp byte [eax + 0x35a7], 0
push edi
mov edi, ecx
je 0x101391c7
mov eax, dword [0x10225524]
mov ecx, dword [eax]
test ecx, ecx
je 0x101391c7
mov eax, dword [ecx]
mov eax, dword [eax + 0x270]
call eax
test al, al
je 0x101391c7
mov eax, dword [0x10223ca8]
mov esi, dword [eax + 0x10]
mov eax, dword [0x10225524]
mov ecx, dword [eax]
mov eax, dword [ecx + 8]
add ecx, 8
mov eax, dword [eax + 0x28]
call eax
mov ecx, dword [esi]
mov edx, dword [ecx + 0x20]
lea ecx, [esp + 0x68]
push ecx
push eax
mov ecx, esi
call edx
movq xmm0, qword [str.SG_TU_K:]
test al, al
mov al, byte [0x101eb1ac]
movq qword [esp + 0x14], xmm0
mov byte [esp + 0x1c], al
je 0x10138cea
mov esi, dword [esp + 0xf8]
jmp 0x10138ced
or esi, 0xffffffff
xor ebx, ebx
nop
mov eax, 0x2f684bdb
mov cl, bl
mul ebx
mov eax, ebx
sub eax, edx
shr eax, 1
add eax, edx
shr eax, 5
movsx eax, al
imul eax, eax, 0x36
sub cl, al
add cl, 0x32
xor byte [esp + ebx + 0x14], cl
inc ebx
cmp ebx, 9
jl 0x10138cf0
mov eax, dword [edi]
lea ecx, [esp + 0x14]
push 0
push ecx
mov ecx, edi
mov eax, dword [eax + 0x18]
call eax
cmp eax, esi
jne 0x101391c7
mov eax, dword [str.G_QG_S8]
xor ebx, ebx
mov dword [esp + 0x14], eax
mov ax, word [0x101ebbdc]
mov word [esp + 0x18], ax
mov al, byte [0x101ebbde]
mov byte [esp + 0x1a], al
mov eax, 0x2f684bdb
mov cl, bl
mul ebx
mov eax, ebx
sub eax, edx
shr eax, 1
add eax, edx
shr eax, 5
movsx eax, al
imul eax, eax, 0x36
sub cl, al
add cl, 0x32
xor byte [esp + ebx + 0x14], cl
inc ebx
cmp ebx, 7
jl 0x10138d50
mov eax, dword [edi]
lea ecx, [esp + 0x14]
push 0
push ecx
mov ecx, edi
mov eax, dword [eax + 0x18]
call eax
cmp eax, esi
je 0x101391c7
push 0
call fcn.101a6cae
add esp, 4
push eax
call fcn.101a6c9c
add esp, 4
call fcn.101a6c7b
cdq
mov ecx, 9
idiv ecx
xorps xmm0, xmm0
mov dword [esp + 0x48], 0
mov dword [esp + 0x4c], 0xf
movups xmmword [esp + 0x38], xmm0
mov byte [esp + 0x38], 0
cmp edx, 8
ja case.default.0x10138dd7
jmp dword [edx*4 + 0x101391e8]
lea ecx, [esp + 0x14]
mov byte [esp + 0x14], 0
lea edx, [ecx + 1]
nop dword [eax]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x10138df0
jmp 0x10138f87
mov ax, word [0x101efc94]
mov word [esp + 0x14], ax
test ah, ah
je 0x10138e39
xor ebx, ebx
nop dword [eax]
mov eax, 0x2f684bdb
mov cl, bl
mul ebx
mov eax, ebx
sub eax, edx
shr eax, 1
add eax, edx
shr eax, 5
movsx eax, al
imul eax, eax, 0x36
sub cl, al
add cl, 0x32
xor byte [esp + ebx + 0x14], cl
inc ebx
cmp ebx, 2
jl 0x10138e10
lea ecx, [esp + 0x14]
lea edx, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x10138e40
lea eax, [esp + 0x14]
jmp 0x10138f8b
mov ax, word [0x101ef964]
mov word [esp + 0x14], ax
test ah, ah
je 0x10138e8a
xor ebx, ebx
mov eax, 0x2f684bdb
mov cl, bl
mul ebx
mov eax, ebx
sub eax, edx
shr eax, 1
add eax, edx
shr eax, 5
movsx eax, al
imul eax, eax, 0x36
sub cl, al
add cl, 0x32
xor byte [esp + ebx + 0x14], cl
inc ebx
cmp ebx, 2
jl 0x10138e61
lea ecx, [esp + 0x14]
lea edx, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x10138e91
lea eax, [esp + 0x14]
jmp 0x10138f8b
lea ecx, [esp + 0x14]
mov byte [esp + 0x14], 0
lea edx, [ecx + 1]
nop dword [eax]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x10138eb0
jmp 0x10138f87
lea ecx, [esp + 0x14]
mov byte [esp + 0x14], 0
lea edx, [ecx + 1]
nop dword [eax]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x10138ed0
jmp 0x10138f87
lea ecx, [esp + 0x14]
mov byte [esp + 0x14], 0
lea edx, [ecx + 1]
nop dword [eax]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x10138ef0
jmp 0x10138f87
mov eax, dword [str.EJP_n6]
xor ebx, ebx
mov dword [esp + 0x14], eax
mov al, byte [0x101ef8e0]
mov byte [esp + 0x18], al
mov eax, 0x2f684bdb
mov cl, bl
mul ebx
mov eax, ebx
sub eax, edx
shr eax, 1
add eax, edx
shr eax, 5
movsx eax, al
imul eax, eax, 0x36
sub cl, al
add cl, 0x32
xor byte [esp + ebx + 0x14], cl
inc ebx
cmp ebx, 5
jl 0x10138f10
lea ecx, [esp + 0x14]
lea edx, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x10138f40
lea eax, [esp + 0x14]
jmp 0x10138f8b
lea ecx, [esp + 0x14]
mov byte [esp + 0x14], 0
lea edx, [ecx + 1]
nop dword [eax]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x10138f60
jmp 0x10138f87
lea ecx, [esp + 0x14]
mov byte [esp + 0x14], 0
lea edx, [ecx + 1]
nop dword [eax]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x10138f80
lea eax, [esp + 0x14]
sub ecx, edx
push ecx
push eax
lea ecx, [esp + 0x40]
call fcn.10022cd0
mov eax, dword [0x101efb74]
mov dword [esp + 0x14], eax
mov ax, word [0x101efb78]
mov word [esp + 0x18], ax
test ah, ah
je 0x10138fdb
xor ebx, ebx
mov eax, 0x2f684bdb
mov cl, bl
mul ebx
mov eax, ebx
sub eax, edx
shr eax, 1
add eax, edx
shr eax, 5
movsx eax, al
imul eax, eax, 0x36
sub cl, al
add cl, 0x32
xor byte [esp + ebx + 0x14], cl
inc ebx
cmp ebx, 6
jl 0x10138fb2
xorps xmm0, xmm0
mov dword [esp + 0x60], 0
lea ecx, [esp + 0x14]
mov dword [esp + 0x64], 0
movups xmmword [esp + 0x50], xmm0
lea edx, [ecx + 1]
nop word [eax + eax]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x10139000
sub ecx, edx
lea eax, [esp + 0x14]
push ecx
push eax
lea ecx, [esp + 0x58]
call fcn.100278e0
cmp dword [esp + 0x64], 0xf
lea edx, [esp + 0x50]
xorps xmm0, xmm0
mov dword [esp + 0x30], 0
cmova edx, dword [esp + 0x50]
mov ecx, edx
mov dword [esp + 0x34], 0
movups xmmword [esp + 0x20], xmm0
lea esi, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x10139043
sub ecx, esi
push ecx
push edx
lea ecx, [esp + 0x28]
call fcn.100278e0
mov ecx, dword [esp + 0x64]
cmp ecx, 0xf
jbe 0x1013908d
mov edx, dword [esp + 0x50]
inc ecx
mov eax, edx
cmp ecx, 0x1000
jb 0x10139083
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x101391e0
push ecx
push edx
call fcn.1019958d
add esp, 8
cmp dword [esp + 0x4c], 0xf
lea ecx, [esp + 0x38]
mov edx, dword [esp + 0x34]
mov eax, edx
mov edi, dword [esp + 0x38]
cmova ecx, edi
mov ebp, dword [esp + 0x30]
sub eax, ebp
mov ebx, dword [esp + 0x48]
cmp ebx, eax
ja 0x101390db
cmp edx, 0xf
lea esi, [esp + 0x20]
lea eax, [ebx + ebp]
cmova esi, dword [esp + 0x20]
push ebx
mov dword [esp + 0x34], eax
push ecx
lea eax, [esi + ebp]
push eax
call fcn.1019aac0
lea eax, [ebx + esi]
add esp, 0xc
mov byte [eax + ebp], 0
jmp 0x101390f3
mov ebx, dword [esp + 0x48]
push ebx
push ecx
push dword [esp + 0x1c]
lea ecx, [esp + 0x2c]
push ebx
call fcn.100284f0
mov edi, dword [esp + 0x38]
mov ecx, dword [esp + 0x30]
mov edx, dword [esp + 0x34]
cmp ecx, edx
jae 0x1013911a
lea eax, [ecx + 1]
cmp edx, 0xf
mov dword [esp + 0x30], eax
lea eax, [esp + 0x20]
cmova eax, dword [esp + 0x20]
mov word [eax + ecx], 0x22
jmp 0x1013912b
push 0x22
push dword [esp + 0x18]
lea ecx, [esp + 0x28]
push 1
call fcn.100283c0
mov eax, dword [0x10223ca8]
lea edx, [esp + 0x20]
cmp dword [esp + 0x34], 0xf
push 0
cmova edx, dword [esp + 0x24]
mov ecx, dword [eax + 0x10]
push edx
mov eax, dword [ecx]
mov eax, dword [eax + 0x1c8]
call eax
mov ecx, dword [esp + 0x34]
cmp ecx, 0xf
jbe 0x10139184
mov edx, dword [esp + 0x20]
inc ecx
mov eax, edx
cmp ecx, 0x1000
jb 0x1013917a
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x101391e0
add byte [eax], al
add byte [ecx + 0x52], dl
push ecx
push edx
call fcn.1019958d
add esp, 8
mov ecx, dword [esp + 0x4c]
mov dword [esp + 0x30], 0
mov dword [esp + 0x34], 0xf
mov byte [esp + 0x20], 0
cmp ecx, 0xf
jbe 0x101391c7
inc esp
and al, 0x20
add byte [ebx + 0x25760ff9], al
inc ecx
mov eax, edi
cmp ecx, 0x1000
jb 0x101391bd
mov edi, dword [eax - 4]
add ecx, 0x23
sub eax, edi
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x101391e0
push ecx
push edi
call fcn.1019958d
add esp, 8
mov ecx, dword [esp + 0x1c4]
pop edi
pop esi
pop ebp
pop ebx
xor ecx, esp
call fcn.10199294
add esp, 0x1bc
ret
call fcn.1019e6c6
nop dword [eax]
loopne 0x10139177
adc edx, dword [eax]
cld
lea edx, [ebx]
adc byte [eax - 0x72], dl
adc edx, dword [eax]
mov eax, dword [0xc010138e]
mov ss, word [ebx]
adc al, ah
mov ss, word [ebx]
adc ah, bh
mov ss, word [ebx]
adc byte [eax - 0x71], dl
adc edx, dword [eax]
jo 0x10139199
adc edx, dword [eax]
int3