Function at 0x100c1520
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x5dc
mov eax, dword [0x10160380]
xor eax, esp
mov dword [esp + 0x5d8], eax
push ebx
mov ebx, ecx
mov ecx, 0x101a157e
push esi
push edi
mov dword [esp + 0x24], ebx
mov dword [esp + 0x28], ebx
call fcn.10138266
mov eax, dword fs:[0x2c]
mov edx, dword [0x10190030]
mov edx, dword [eax + edx*4]
mov eax, dword [0x1019a64c]
cmp eax, dword [edx + 4]
jle 0x100c239a
push 0x1019a64c
call fcn.100dfe87
add esp, 4
cmp dword [0x1019a64c], 0xffffffff
jne 0x100c239a
lea eax, [esp + 0x5b4]
mov ecx, 0x1018cc20
push eax
call fcn.1005d190
cmp dword [esp + 0x5c8], 0xf
lea eax, [esp + 0x59c]
lea esi, [esp + 0x5b4]
mov ecx, 0x1018c240
cmova esi, dword [esp + 0x5b4]
push eax
call fcn.1004c6b0
cmp dword [esp + 0x5b0], 0xf
lea eax, [esp + 0x59c]
mov ecx, 0x1018c838
mov dword [esp + 0x38], 0x2a
cmova eax, dword [esp + 0x59c]
mov dword [esp + 0x40], eax
lea eax, [esp + 0x584]
push eax
mov dword [esp + 0x40], esi
mov dword [esp + 0x48], 2
call fcn.1005c8e0
cmp dword [esp + 0x598], 0xf
lea eax, [esp + 0x56c]
lea esi, [esp + 0x584]
mov ecx, 0x1018c228
cmova esi, dword [esp + 0x584]
push eax
call fcn.1004b2b0
cmp dword [esp + 0x580], 0xf
lea eax, [esp + 0x56c]
mov ecx, 0x1018cf88
mov dword [esp + 0x48], 0x3b
cmova eax, dword [esp + 0x56c]
mov dword [esp + 0x50], eax
lea eax, [esp + 0x554]
push eax
mov dword [esp + 0x50], esi
mov dword [esp + 0x58], 0xc
call fcn.1005dab0
cmp dword [esp + 0x568], 0xf
lea eax, [esp + 0x5cc]
lea esi, [esp + 0x554]
mov ecx, 0x1018cc98
cmova esi, dword [esp + 0x554]
push eax
call fcn.1004b2b0
cmp dword [esp + 0x5e0], 0xf
lea eax, [esp + 0x5cc]
mov ecx, 0x1018c5c0
mov dword [esp + 0x58], 0x1f4
cmova eax, dword [esp + 0x5cc]
mov dword [esp + 0x60], eax
lea eax, [esp + 0x524]
push eax
mov dword [esp + 0x60], esi
mov dword [esp + 0x68], 0
call fcn.1004af80
cmp dword [esp + 0x538], 0xf
lea eax, [esp + 0x50c]
lea esi, [esp + 0x524]
mov ecx, 0x1018c4e0
cmova esi, dword [esp + 0x524]
push eax
call fcn.1004c340
cmp dword [esp + 0x520], 0xf
lea eax, [esp + 0x50c]
mov ecx, 0x1018cdb0
mov dword [esp + 0x68], 0x1f9
cmova eax, dword [esp + 0x50c]
mov dword [esp + 0x70], eax
lea eax, [esp + 0x4f4]
push eax
mov dword [esp + 0x70], esi
mov dword [esp + 0x78], 4
call fcn.1005d5b0
cmp dword [esp + 0x508], 0xf
lea esi, [esp + 0x4f4]
lea eax, [esp + 0x4dc]
cmova esi, dword [esp + 0x4f4]
push eax
mov ecx, 0x1018c808
call fcn.1004b600
cmp dword [esp + 0x4f0], 0xf
lea eax, [esp + 0x4dc]
mov ecx, 0x1018c3b0
mov dword [esp + 0x78], 0x1fa
cmova eax, dword [esp + 0x4dc]
mov dword [esp + 0x80], eax
lea eax, [esp + 0x4c4]
push eax
mov dword [esp + 0x80], esi
mov dword [esp + 0x88], 5
call fcn.1005c560
cmp dword [esp + 0x4d8], 0xf
lea eax, [esp + 0x53c]
lea esi, [esp + 0x4c4]
mov ecx, 0x1018ccb0
cmova esi, dword [esp + 0x4c4]
push eax
call fcn.1004c420
cmp dword [esp + 0x550], 0xf
lea eax, [esp + 0x53c]
mov ecx, 0x1018d018
mov dword [esp + 0x88], 0x1fb
cmova eax, dword [esp + 0x53c]
mov dword [esp + 0x90], eax
lea eax, [esp + 0x494]
push eax
mov dword [esp + 0x90], esi
mov dword [esp + 0x98], 7
call fcn.1005c720
cmp dword [esp + 0x4a8], 0xf
lea eax, [esp + 0x47c]
lea esi, [esp + 0x494]
mov ecx, 0x1018cd90
cmova esi, dword [esp + 0x494]
push eax
call fcn.1004c6b0
cmp dword [esp + 0x490], 0xf
lea eax, [esp + 0x47c]
mov ecx, 0x1018ca58
mov dword [esp + 0x98], 0x1fc
cmova eax, dword [esp + 0x47c]
mov dword [esp + 0xa0], eax
lea eax, [esp + 0x464]
push eax
mov dword [esp + 0xa0], esi
mov dword [esp + 0xa8], 8
call fcn.1004c420
cmp dword [esp + 0x478], 0xf
lea eax, [esp + 0x44c]
lea esi, [esp + 0x464]
mov ecx, 0x1018cfb8
cmova esi, dword [esp + 0x464]
push eax
call fcn.1005bdb0
cmp dword [esp + 0x460], 0xf
lea eax, [esp + 0x44c]
mov ecx, 0x1018c260
mov dword [esp + 0xa8], 0x1fd
cmova eax, dword [esp + 0x44c]
mov dword [esp + 0xac], eax
lea eax, [esp + 0x434]
push eax
mov dword [esp + 0xb4], esi
mov dword [esp + 0xb8], 0xffffffff
call fcn.1005cf00
cmp dword [esp + 0x448], 0xf
lea eax, [esp + 0x41c]
lea esi, [esp + 0x434]
mov ecx, 0x1018d0b0
cmova esi, dword [esp + 0x434]
push eax
call fcn.1004c420
cmp dword [esp + 0x430], 0xf
lea eax, [esp + 0x41c]
mov dword [esp + 0xb8], 0x200
cmova eax, dword [esp + 0x41c]
mov dword [esp + 0xbc], esi
mov dword [esp + 0xc0], eax
mov dword [esp + 0xc4], 3
lea eax, [esp + 0x404]
mov ecx, 0x1018caf0
push eax
call fcn.1005d900
cmp dword [esp + 0x418], 0xf
lea eax, [esp + 0x3ec]
lea esi, [esp + 0x404]
mov ecx, 0x1018c390
cmova esi, dword [esp + 0x404]
push eax
call fcn.1004c0d0
cmp dword [esp + 0x400], 0xf
lea eax, [esp + 0x3ec]
mov ecx, 0x1018c4b0
mov dword [esp + 0xc8], 0x202
cmova eax, dword [esp + 0x3ec]
mov dword [esp + 0xd0], eax
lea eax, [esp + 0x3d4]
push eax
mov dword [esp + 0xd0], esi
mov dword [esp + 0xd8], 0xb
call fcn.1005c8e0
cmp dword [esp + 0x3e8], 0xf
lea eax, [esp + 0x3bc]
lea esi, [esp + 0x3d4]
mov ecx, 0x1018c988
cmova esi, dword [esp + 0x3d4]
push eax
call fcn.1004c270
cmp dword [esp + 0x3d0], 0xf
lea eax, [esp + 0x3bc]
mov ecx, 0x1018d0d0
mov dword [esp + 0xd8], 0x203
cmova eax, dword [esp + 0x3bc]
mov dword [esp + 0xe0], eax
lea eax, [esp + 0x3a4]
push eax
mov dword [esp + 0xe0], esi
mov dword [esp + 0xe8], 1
call fcn.1004af80
cmp dword [esp + 0x3b8], 0xf
lea eax, [esp + 0x38c]
lea esi, [esp + 0x3a4]
mov ecx, 0x1018d000
cmova esi, dword [esp + 0x3a4]
push eax
call fcn.1004c340
cmp dword [esp + 0x3a0], 0xf
lea eax, [esp + 0x38c]
mov ecx, 0x1018cb58
mov dword [esp + 0xe8], 0x204
cmova eax, dword [esp + 0x38c]
mov dword [esp + 0xf0], eax
lea eax, [esp + 0x374]
push eax
mov dword [esp + 0xf0], esi
mov dword [esp + 0xf8], 9
call fcn.1005d330
cmp dword [esp + 0x388], 0xf
lea eax, [esp + 0x374]
mov dword [esp + 0xf8], 0x13a3
cmova eax, dword [esp + 0x374]
cmp byte [0x1018cd10], 0
mov dword [esp + 0xfc], eax
mov dword [esp + 0x100], 0
mov dword [esp + 0x104], 0xffffffff
je 0x100c1b95
cmp byte [0x1018cd11], 0
jne 0x100c1be3
mov byte [0x1018cd11], 1
xor esi, esi
xor edx, edx
mov ebx, esi
xor edx, dword [0x1018cd5c]
xor ebx, dword [0x1018cd58]
xor edx, 0xd28f2c5
xor ebx, 0x1de26cd5
mov ecx, edx
mov eax, ebx
shld ecx, eax, 0xd
shl eax, 0xd
xor edx, ecx
xor ebx, eax
mov dword [esp + 0x14], edx
mov eax, ebx
shrd eax, edx, 7
xor al, bl
xor byte [esi + 0x1018cd12], al
inc esi
cmp esi, 0x45
jb 0x100c1b50
jmp 0x100c1be3
xor eax, eax
nop word [eax + eax]
xor esi, esi
mov ebx, eax
xor esi, dword [0x1018cd5c]
xor ebx, dword [0x1018cd58]
xor esi, 0xd28f2c5
xor ebx, 0x1de26cd5
mov edx, esi
mov ecx, ebx
shld edx, ecx, 0xd
shl ecx, 0xd
xor esi, edx
xor ebx, ecx
mov dword [esp + 0x14], esi
mov ecx, ebx
shrd ecx, esi, 7
xor cl, bl
xor byte [eax + 0x1018cd12], cl
inc eax
cmp eax, 0x45
jb 0x100c1ba0
push ecx
push 0x1018cd56
push 0x1018cd12
lea ecx, [esp + 0x368]
call fcn.1004c790
cmp dword [esp + 0x370], 0xf
lea eax, [esp + 0x35c]
mov ecx, 0x1018c930
mov dword [esp + 0x108], 0x13a4
cmova eax, dword [esp + 0x35c]
mov dword [esp + 0x10c], eax
lea eax, [esp + 0x344]
push eax
mov dword [esp + 0x114], 0
mov dword [esp + 0x118], 0xffffffff
call fcn.1005d9e0
cmp dword [esp + 0x358], 0xf
lea eax, [esp + 0x344]
mov ecx, 0x1018c3e0
mov dword [esp + 0x118], 0x13a5
cmova eax, dword [esp + 0x344]
mov dword [esp + 0x11c], eax
lea eax, [esp + 0x32c]
push eax
mov dword [esp + 0x124], 0
mov dword [esp + 0x128], 0xffffffff
call fcn.1005cc60
cmp dword [esp + 0x340], 0xf
lea eax, [esp + 0x32c]
mov ecx, 0x1018c628
mov dword [esp + 0x128], 0x13a6
cmova eax, dword [esp + 0x32c]
mov dword [esp + 0x12c], eax
lea eax, [esp + 0x314]
push eax
mov dword [esp + 0x134], 0
mov dword [esp + 0x138], 0xffffffff
call fcn.1005cd40
cmp dword [esp + 0x328], 0xf
lea eax, [esp + 0x314]
mov ecx, 0x1018caa8
mov dword [esp + 0x138], 0x13a7
cmova eax, dword [esp + 0x314]
mov dword [esp + 0x13c], eax
lea eax, [esp + 0x2fc]
push eax
mov dword [esp + 0x144], 0
mov dword [esp + 0x148], 0xffffffff
call fcn.1005c9c0
cmp dword [esp + 0x310], 0xf
lea eax, [esp + 0x2fc]
mov ecx, 0x1018ccd0
mov dword [esp + 0x148], 0x13a8
cmova eax, dword [esp + 0x2fc]
mov dword [esp + 0x14c], eax
lea eax, [esp + 0x2e4]
push eax
mov dword [esp + 0x154], 0
mov dword [esp + 0x158], 0xffffffff
call fcn.1005d330
cmp dword [esp + 0x2f8], 0xf
lea eax, [esp + 0x2e4]
mov ecx, 0x1018c420
mov dword [esp + 0x158], 0x13a9
cmova eax, dword [esp + 0x2e4]
mov dword [esp + 0x15c], eax
lea eax, [esp + 0x2cc]
push eax
mov dword [esp + 0x164], 0
mov dword [esp + 0x168], 0xffffffff
call fcn.1005d330
cmp dword [esp + 0x2e0], 0xf
lea eax, [esp + 0x2cc]
mov dword [esp + 0x168], 0x13aa
mov ecx, 0x1018cc50
cmova eax, dword [esp + 0x2cc]
mov dword [esp + 0x16c], eax
lea eax, [esp + 0x2b4]
mov dword [esp + 0x170], 0
mov dword [esp + 0x174], 0xffffffff
push eax
call fcn.1005be90
cmp dword [esp + 0x2c8], 0xf
lea eax, [esp + 0x2b4]
mov ecx, 0x1018d048
mov dword [esp + 0x178], 0x13ab
cmova eax, dword [esp + 0x2b4]
mov dword [esp + 0x17c], eax
lea eax, [esp + 0x29c]
push eax
mov dword [esp + 0x184], 0
mov dword [esp + 0x188], 0xffffffff
call fcn.1005dab0
cmp dword [esp + 0x2b0], 0xf
lea eax, [esp + 0x284]
lea esi, [esp + 0x29c]
mov ecx, 0x1018cfe8
cmova esi, dword [esp + 0x29c]
push eax
call fcn.1004c1a0
cmp dword [esp + 0x298], 0xf
lea eax, [esp + 0x284]
mov ecx, 0x1018cf18
mov dword [esp + 0x188], 0x209
cmova eax, dword [esp + 0x284]
mov dword [esp + 0x190], eax
lea eax, [esp + 0x26c]
push eax
mov dword [esp + 0x190], esi
mov dword [esp + 0x198], 0xe
call fcn.1005c560
cmp dword [esp + 0x280], 0xf
lea eax, [esp + 0x254]
lea esi, [esp + 0x26c]
mov ecx, 0x1018c490
cmova esi, dword [esp + 0x26c]
push eax
call fcn.1004bcb0
cmp dword [esp + 0x268], 0xf
lea eax, [esp + 0x254]
mov ecx, 0x1018ca78
mov dword [esp + 0x198], 0x206
cmova eax, dword [esp + 0x254]
mov dword [esp + 0x1a0], eax
lea eax, [esp + 0x23c]
push eax
mov dword [esp + 0x1a0], esi
mov dword [esp + 0x1a8], 0xe
call fcn.1004af80
cmp dword [esp + 0x250], 0xf
lea eax, [esp + 0x224]
lea esi, [esp + 0x23c]
mov ecx, 0x1018c780
cmova esi, dword [esp + 0x23c]
push eax
call fcn.1004c340
cmp dword [esp + 0x238], 0xf
lea eax, [esp + 0x224]
mov ecx, 0x1018c9b0
mov dword [esp + 0x1a8], 0x205
cmova eax, dword [esp + 0x224]
mov dword [esp + 0x1b0], eax
lea eax, [esp + 0x20c]
push eax
mov dword [esp + 0x1b0], esi
mov dword [esp + 0x1b8], 0xe
call fcn.1005bdb0
cmp dword [esp + 0x220], 0xf
lea eax, [esp + 0x1f4]
lea esi, [esp + 0x20c]
mov ecx, 0x1018c9f0
cmova esi, dword [esp + 0x20c]
push eax
call fcn.1004c420
cmp dword [esp + 0x208], 0xf
lea eax, [esp + 0x1f4]
mov dword [esp + 0x1b8], 0x20d
cmova eax, dword [esp + 0x1f4]
mov dword [esp + 0x1c0], eax
lea eax, [esp + 0x1dc]
mov dword [esp + 0x1bc], esi
mov dword [esp + 0x1c4], 0xe
push eax
mov ecx, 0x1018ca28
call fcn.1005d5b0
cmp dword [esp + 0x1f0], 0xf
lea eax, [esp + 0x4ac]
lea esi, [esp + 0x1dc]
mov ecx, 0x1018c820
cmova esi, dword [esp + 0x1dc]
push eax
call fcn.1004b600
cmp dword [esp + 0x4c0], 0xf
lea eax, [esp + 0x4ac]
mov dword [esp + 0x1cc], esi
lea edi, [esp + 0x38]
cmova eax, dword [esp + 0x4ac]
lea esi, [esp + 0x1d8]
push 0x20
mov dword [esp + 0x1cc], 0x1f7
mov dword [esp + 0x1d4], eax
mov dword [esp + 0x1d8], 0xe
mov dword [0x1019a634], 0
mov dword [0x1019a638], 0
call fcn.100dfeeb
mov ebx, eax
add esp, 4
mov dword [ebx], ebx
mov dword [ebx + 4], ebx
mov dword [ebx + 8], ebx
mov word [ebx + 0xc], 0x101
mov dword [0x1019a634], ebx
cmp edi, esi
je 0x100c2178
push edi
push ebx
lea eax, [esp + 0x34]
push eax
call fcn.100c3d40
movq xmm0, qword [eax]
mov eax, dword [eax + 8]
movq qword [esp + 0x10], xmm0
mov dword [esp + 0x18], eax
test al, al
jne 0x100c2171
cmp dword [0x1019a638], 0x7ffffff
je 0x100c23f3
mov esi, dword [0x1019a634]
push 0x20
call fcn.100dfeeb
movups xmm0, xmmword [edi]
add esp, 4
mov ecx, 0x1019a634
movups xmmword [eax + 0x10], xmm0
mov dword [eax], esi
mov dword [eax + 4], esi
mov dword [eax + 8], esi
push eax
push dword [esp + 0x18]
mov word [eax + 0xc], 0
push dword [esp + 0x18]
call fcn.100c34f0
lea esi, [esp + 0x1d8]
add edi, 0x10
cmp edi, esi
jne 0x100c2101
lea ecx, [esp + 0x4ac]
call fcn.1001b490
lea ecx, [esp + 0x1dc]
call fcn.1001b490
lea ecx, [esp + 0x1f4]
call fcn.1001b490
lea ecx, [esp + 0x20c]
call fcn.1001b490
lea ecx, [esp + 0x224]
call fcn.1001b490
lea ecx, [esp + 0x23c]
call fcn.1001b490
lea ecx, [esp + 0x254]
call fcn.1001b490
lea ecx, [esp + 0x26c]
call fcn.1001b490
lea ecx, [esp + 0x284]
call fcn.1001b490
lea ecx, [esp + 0x29c]
call fcn.1001b490
lea ecx, [esp + 0x2b4]
call fcn.1001b490
lea ecx, [esp + 0x2cc]
call fcn.1001b490
lea ecx, [esp + 0x2e4]
call fcn.1001b490
lea ecx, [esp + 0x2fc]
call fcn.1001b490
lea ecx, [esp + 0x314]
call fcn.1001b490
lea ecx, [esp + 0x32c]
call fcn.1001b490
lea ecx, [esp + 0x344]
call fcn.1001b490
lea ecx, [esp + 0x35c]
call fcn.1001b490
lea ecx, [esp + 0x374]
call fcn.1001b490
lea ecx, [esp + 0x38c]
call fcn.1001b490
lea ecx, [esp + 0x3a4]
call fcn.1001b490
lea ecx, [esp + 0x3bc]
call fcn.1001b490
lea ecx, [esp + 0x3d4]
call fcn.1001b490
lea ecx, [esp + 0x3ec]
call fcn.1001b490
lea ecx, [esp + 0x404]
call fcn.1001b490
lea ecx, [esp + 0x41c]
call fcn.1001b490
lea ecx, [esp + 0x434]
call fcn.1001b490
lea ecx, [esp + 0x44c]
call fcn.1001b490
lea ecx, [esp + 0x464]
call fcn.1001b490
lea ecx, [esp + 0x47c]
call fcn.1001b490
lea ecx, [esp + 0x494]
call fcn.1001b490
lea ecx, [esp + 0x53c]
call fcn.1001b490
lea ecx, [esp + 0x4c4]
call fcn.1001b490
lea ecx, [esp + 0x4dc]
call fcn.1001b490
lea ecx, [esp + 0x4f4]
call fcn.1001b490
lea ecx, [esp + 0x50c]
call fcn.1001b490
lea ecx, [esp + 0x524]
call fcn.1001b490
lea ecx, [esp + 0x5cc]
call fcn.1001b490
lea ecx, [esp + 0x554]
call fcn.1001b490
lea ecx, [esp + 0x56c]
call fcn.1001b490
lea ecx, [esp + 0x584]
call fcn.1001b490
lea ecx, [esp + 0x59c]
call fcn.1001b490
lea ecx, [esp + 0x5b4]
call fcn.1001b490
push 0x1013af40
call fcn.100e0220
add esp, 4
push 0x1019a64c
call fcn.100dfe36
mov ebx, dword [esp + 0x28]
add esp, 4
lea eax, [esp + 0x28]
push eax
lea eax, [esp + 0x14]
push eax
call fcn.100c3440
mov eax, dword [esp + 0x18]
mov ecx, dword [0x1019a634]
cmp byte [eax + 0xd], 0
jne 0x100c23be
cmp ebx, dword [eax + 0x10]
jge 0x100c23c0
mov eax, ecx
cmp eax, ecx
jne 0x100c23db
xor eax, eax
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0x5d8]
xor ecx, esp
call fcn.100dfe28
mov esp, ebp
pop ebp
ret
mov ecx, dword [esp + 0x5e4]
add eax, 0x14
pop edi
pop esi
pop ebx
xor ecx, esp
call fcn.100dfe28
mov esp, ebp
pop ebp
ret
call fcn.1000a3a0
int3