Function at 0x100bfb44
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
sub esp, 0x30
mov edi, ecx
mov ebx, dword [ebp + 8]
mov eax, dword [0x10243228]
xor eax, ebp
mov dword [ebp - 0x10], eax
push 0x224
push 0xff
push ebx
call fcn.101db130
add esp, 0xc
mov ecx, ebx
call fcn.100c08b2
mov ecx, dword [edi + 0x1540]
add edi, 0x1540
mov eax, dword [ecx + 0x16344]
test eax, eax
je 0x100bfb97
mov ecx, eax
call fcn.1014153e
mov ecx, dword [edi]
jmp 0x100bfb99
xor eax, eax
mov dword [ebx], eax
mov eax, dword [ecx + 0x16344]
test eax, eax
je 0x100bfbb0
mov ecx, eax
call fcn.1011b1f4
mov ecx, dword [edi]
jmp 0x100bfbb2
xor eax, eax
mov dl, byte [ebx + 4]
and dl, 0xfe
or dl, al
mov byte [ebx + 4], dl
mov eax, dword [ecx + 0x16344]
test eax, eax
je 0x100bfbd7
mov ecx, eax
call fcn.1011b200
add al, al
mov dl, byte [ebx + 4]
mov ecx, dword [edi]
jmp 0x100bfbd9
xor eax, eax
and dl, 0xfd
or dl, al
mov byte [ebx + 4], dl
call fcn.100bb91e
test al, al
je 0x100bfc24
mov ecx, dword [edi]
mov eax, dword [ecx + 0x44]
mov edx, dword [ebx + 8]
and eax, 7
and edx, 0xffffffc7
lea eax, [edx + eax*8]
mov dword [ebx + 8], eax
call fcn.100bc552
mov ecx, dword [0x102478c0]
shl ecx, 7
xor edx, edx
cmp eax, 1
movzx eax, cl
cmovle eax, edx
mov ecx, 0xffffff7f
and ecx, dword [ebx + 0x54]
or ecx, eax
mov dword [ebx + 0x54], ecx
mov ecx, dword [edi]
call fcn.100bb8dc
mov cl, byte [ebx + 0xc]
and cl, 0xfe
or cl, al
mov byte [ebx + 0xc], cl
mov ecx, dword [edi]
call fcn.100bb956
test al, al
je 0x100bfd14
or byte [ebx + 0xc], 4
mov ecx, dword [edi]
mov edx, dword [ecx + 8]
mov eax, dword [ebx + 0x10]
and edx, 7
mov dword [ebp - 0x2c], edx
and eax, 0xfffffff8
or eax, edx
mov dword [ebx + 0x10], eax
mov esi, dword [ecx + 0x14]
and esi, 7
and eax, 0xffffffc7
mov dword [ebp - 0x3c], esi
lea eax, [eax + esi*8]
mov dword [ebx + 0x10], eax
mov edx, ebx
mov ebx, dword [ecx + 0x18]
and ebx, 7
mov esi, ebx
shl esi, 6
and eax, 0xfffffe3f
or eax, esi
mov dword [edx + 0x10], eax
mov esi, dword [ecx + 0x1c]
and esi, 7
mov dword [ebp - 0x38], esi
shl esi, 9
and eax, 0xfffff1ff
or eax, esi
mov dword [edx + 0x10], eax
mov esi, 0xff
cmp dword [ecx + 0x10], esi
sete ah
mov al, byte [edx + 0x14]
and al, 0xfe
mov byte [ebp - 0x30], ah
or al, ah
mov byte [edx + 0x14], al
cmp dword [ecx + 0x20], esi
sete ah
add ah, ah
and al, 0xfd
mov byte [ebp - 0x25], ah
or al, ah
mov byte [edx + 0x14], al
cmp dword [ecx + 0x20], 0
sete ah
shl ah, 2
and al, 0xfb
mov byte [ebp - 0x34], ah
or al, ah
mov byte [edx + 0x14], al
mov ah, byte [ecx + 0x24]
shl ah, 3
and al, 0xf7
or al, ah
mov byte [edx + 0x14], al
mov edx, dword [ebp - 0x2c]
cmp byte [ecx + 0x24], 0
je 0x100bfcf5
mov edx, dword [ecx + 0x28]
mov esi, dword [ebp + 8]
mov eax, dword [esi + 0x18]
and edx, 7
and eax, 0xfffffff8
or eax, edx
mov dword [esi + 0x18], eax
cmp byte [ecx + 0x24], 0
je 0x100bfd1b
mov edx, dword [ecx + 0x34]
mov esi, dword [ebp - 0x38]
jmp 0x100bfd21
mov ecx, dword [edi]
jmp 0x100bfdb8
mov esi, dword [ebp - 0x38]
mov edx, dword [ebp - 0x3c]
and edx, 7
and eax, 0xffffffc7
lea eax, [eax + edx*8]
mov edx, dword [ebp + 8]
mov dword [edx + 0x18], eax
cmp byte [ecx + 0x24], 0
je 0x100bfd39
mov ebx, dword [ecx + 0x38]
mov dl, byte [ebp - 0x34]
mov dh, byte [ebp - 0x25]
and ebx, 7
shl ebx, 6
and eax, 0xfffffe3f
or eax, ebx
mov ebx, dword [ebp + 8]
mov dword [ebx + 0x18], eax
cmp byte [ecx + 0x24], 0
je 0x100bfd5b
mov esi, dword [ecx + 0x3c]
and esi, 7
shl esi, 9
and eax, 0xfffff1ff
or eax, esi
mov dword [ebx + 0x18], eax
cmp byte [ecx + 0x24], 0
mov ah, byte [ebp - 0x30]
je 0x100bfd7e
cmp dword [ecx + 0x30], 0xff
sete ah
mov al, byte [ebx + 0x1c]
and al, 0xfe
or al, ah
mov byte [ebx + 0x1c], al
cmp byte [ecx + 0x24], 0
je 0x100bfd9a
cmp dword [ecx + 0x40], 0xff
sete dh
add dh, dh
and al, 0xfd
or al, dh
mov byte [ebx + 0x1c], al
cmp byte [ecx + 0x24], 0
je 0x100bfdb1
cmp dword [ecx + 0x40], 0
sete dl
shl dl, 2
and al, 0xfb
or al, dl
mov byte [ebx + 0x1c], al
call fcn.100bb902
test al, al
je 0x100bfdf9
or byte [ebx + 0x1c], 8
mov eax, dword [edi]
mov ecx, dword [eax + 0x163e4]
mov edx, dword [ebx + 8]
and ecx, 7
and edx, 0xfffffff8
or edx, ecx
mov dword [ebx + 8], edx
mov eax, dword [eax + 0x16320]
push dword [eax + 0x64]
call fcn.100d61e2
add esp, 4
mov cl, byte [ebx + 0xc]
add al, al
and cl, 0xfd
or cl, al
mov byte [ebx + 0xc], cl
mov ecx, dword [edi]
mov al, byte [ecx + 0x163d1]
mov dl, byte [ebx + 0x24]
add al, al
and dl, 0xfd
or dl, al
mov byte [ebx + 0x24], dl
call fcn.100bb778
mov cl, byte [ebx + 0x1c]
shl al, 4
and cl, 0xef
or cl, al
mov byte [ebx + 0x1c], cl
mov ecx, dword [edi]
call fcn.100bb8c0
mov ecx, dword [ebx + 0x20]
and eax, 3
and ecx, 0xfffffffc
or ecx, eax
mov dword [ebx + 0x20], ecx
mov ecx, dword [edi]
cmp byte [ecx + 0x1633c], 0
je 0x100bfe52
call fcn.100bb8c0
test eax, eax
setne al
shl al, 2
mov ecx, dword [edi]
jmp 0x100bfe54
xor eax, eax
mov dl, byte [ebx + 0x24]
and dl, 0xfb
or dl, al
mov byte [ebx + 0x24], dl
call fcn.100bc15a
mov dl, byte [ebx + 0x24]
shl al, 3
and dl, 0xf7
or dl, al
mov byte [ebx + 0x24], dl
mov ecx, dword [edi]
movss xmm1, dword [ecx + 0x60]
xorps xmm0, xmm0
ucomiss xmm1, xmm0
jne 0x100bfe93
jp 0x100bfe93
movss xmm1, dword [ecx + 0x64]
ucomiss xmm1, xmm0
jne 0x100bfe93
jnp 0x100c03d7
mov al, 0x10
and dl, 0xef
or dl, al
mov byte [ebx + 0x24], dl
call fcn.100bbcdc
test al, al
je 0x100bff45
or byte [ebx + 0x24], 0x20
mov ecx, dword [edi]
call fcn.100bbe0e
mov ecx, dword [ebx + 0x28]
and eax, 0xf
and ecx, 0xfffffff0
or ecx, eax
mov dword [ebx + 0x28], ecx
mov ecx, dword [edi]
call fcn.100bbf88
shl eax, 4
mov ecx, 0xffffff0f
and ecx, dword [ebx + 0x28]
movzx eax, al
or ecx, eax
mov dword [ebx + 0x28], ecx
mov ecx, dword [edi]
call fcn.100bbd60
and eax, 7
mov ecx, 0xfffff8ff
and ecx, dword [ebx + 0x28]
shl eax, 8
or ecx, eax
mov dword [ebx + 0x28], ecx
mov ecx, dword [edi]
call fcn.100bbf18
and eax, 0xf
mov ecx, 0xffff87ff
and ecx, dword [ebx + 0x28]
shl eax, 0xb
or ecx, eax
mov dword [ebx + 0x28], ecx
mov ecx, dword [edi]
call fcn.100bbfb8
and eax, 0xf
mov ecx, 0xfff87fff
and ecx, dword [ebx + 0x28]
shl eax, 0xf
or ecx, eax
mov dword [ebx + 0x28], ecx
mov ecx, dword [edi]
call fcn.100bbe38
and eax, 7
shl eax, 0x13
mov ecx, 0xffc7ffff
and ecx, dword [ebx + 0x28]
or ecx, eax
mov dword [ebx + 0x28], ecx
mov ecx, dword [edi]
call fcn.100bbf6c
mov ecx, dword [ebx + 0x5c]
and eax, 0xf
and ecx, 0xfffffff0
or ecx, eax
mov dword [ebx + 0x5c], ecx
xor esi, esi
mov ecx, dword [edi]
push esi
call fcn.100bc5ba
lea ecx, [esi*4]
shl eax, cl
or dword [ebx + 0x2c], eax
mov ecx, dword [edi]
push esi
call fcn.100bc59e
mov dword [ebx + esi*4 + 0x30], eax
inc esi
cmp esi, 8
jne 0x100bff5c
mov ecx, dword [edi]
cmp byte [ecx + 0x16430], 0
je 0x100bffa6
mov eax, dword [ecx + 0x162e0]
test eax, eax
je 0x100bffa6
push dword [eax + 0x30]
call fcn.100d627e
add esp, 4
mov ecx, dword [edi]
jmp 0x100bffa8
xor eax, eax
mov dl, byte [ebx + 0x50]
and dl, 0xfe
or dl, al
mov byte [ebx + 0x50], dl
call fcn.100bc552
mov edx, dword [ebx + 0x54]
and eax, 7
and edx, 0xfffffff8
or edx, eax
mov dword [ebx + 0x54], edx
mov ecx, dword [edi]
mov esi, dword [ecx + 0x16438]
and esi, 0xf
and edx, 0xffffff87
lea edx, [edx + esi*8]
mov dword [ebx + 0x54], edx
cmp eax, 2
jb 0x100bfffd
mov eax, dword [ecx + 0x16344]
test eax, eax
je 0x100bfffd
mov ecx, eax
call fcn.1011b20c
mov cl, byte [ebx + 0x58]
and cl, 0xfe
or cl, al
mov byte [ebx + 0x58], cl
mov ecx, dword [edi]
mov al, byte [ecx + 0x58]
mov dl, byte [ebx + 0x58]
add al, al
and dl, 0xfd
or dl, al
mov byte [ebx + 0x58], dl
cmp dword [ecx + 0x16344], 0
jne 0x100c0085
add ecx, 0x70
lea esi, [ebp - 0x24]
push esi
call fcn.100d6ffa
movsd xmm0, qword [esi]
movsd qword [ebx + 0x1a0], xmm0
add ebx, 0x1a8
mov esi, 0x150
mov ecx, dword [edi]
add ecx, esi
lea eax, [ebp - 0x24]
push eax
call fcn.100d6ffa
movsd xmm0, qword [ebp - 0x24]
movsd qword [ebx], xmm0
add ebx, 8
add esi, 0xe0
cmp esi, 0x770
jne 0x100c0039
mov ecx, dword [edi]
call fcn.100bc34c
test al, al
je 0x100c0075
mov eax, dword [edi]
mov al, byte [eax + 0x16355]
jmp 0x100c0077
xor eax, eax
mov ebx, dword [ebp + 8]
mov cl, byte [ebx + 0x24]
and cl, 0xfe
or cl, al
mov byte [ebx + 0x24], cl
lea edx, [ebx + 0x1a0]
xor eax, eax
mov esi, 0x770
mov ebx, 0xfffffec0
mov dword [ebp - 0x2c], edx
mov dword [ebp - 0x30], eax
mov ecx, dword [edi]
mov eax, dword [ecx + 0x16344]
test eax, eax
je 0x100c00be
mov ecx, eax
push dword [ebp - 0x30]
call fcn.1014152a
mov edx, dword [ebp - 0x2c]
test al, al
je 0x100c00e9
mov ecx, dword [edi]
jmp 0x100c00cc
mov eax, dword [ebp - 0x30]
cmp eax, 7
ja 0x100c0100
test byte [edx + eax*8], 0x1f
je 0x100c0100
add ecx, esi
lea eax, [ebp - 0x24]
push eax
call fcn.100c98a8
mov edx, dword [ebp - 0x2c]
mov eax, dword [ebp - 0x14]
mov dword [edx + ebx + 0x10], eax
movups xmm0, xmmword [ebp - 0x24]
movups xmmword [edx + ebx], xmm0
mov eax, dword [ebp - 0x30]
inc eax
add esi, 0xac0
add ebx, 0x14
cmp esi, 0xb370
jne 0x100c009a
mov ecx, dword [edi]
push 1
call fcn.100bb4de
mov ebx, eax
mov ecx, dword [edi]
call fcn.100bba7c
mov bh, al
mov ecx, dword [edi]
cmp dword [ecx + 0x50], 0
sete al
or al, bl
mov byte [ebp - 0x30], al
call fcn.100bb830
movzx eax, ax
cmp eax, 0x300
mov dword [ebp - 0x34], edi
mov byte [ebp - 0x25], bl
jae 0x100c0297
xor bl, 1
or bh, bl
mov byte [ebp - 0x2c], bh
xor esi, esi
xor ebx, ebx
mov ecx, dword [edi]
push ebx
push esi
call fcn.100bc410
test al, al
je 0x100c018d
xor edx, edx
inc edx
mov ecx, ebx
shl edx, cl
mov edi, dword [ebp + 8]
mov al, byte [edi + esi*2 + 0x1e4]
mov ecx, eax
or cl, dl
mov byte [edi + esi*2 + 0x1e4], cl
mov edi, dword [ebp - 0x34]
cmp byte [ebp - 0x2c], 0
jne 0x100c018d
and cl, 0xf
shl dl, 4
and al, 0xf0
or al, dl
or al, cl
mov ecx, dword [ebp + 8]
mov byte [ecx + esi*2 + 0x1e4], al
inc ebx
cmp ebx, 4
jne 0x100c0145
mov ecx, dword [edi]
cmp byte [ecx + esi + 0x162d8], 0
je case.0x100c01bc.1
call fcn.100bb830
movzx eax, ax
cmp eax, 0x103
ja case.0x100c01bc.1
mov eax, dword [edi]
mov eax, dword [eax + esi*4 + 0x162b8]
cmp eax, 4
ja case.0x100c01bc.1
jmp dword [eax*4 + 0x1021a168]
mov eax, dword [ebp + 8]
or byte [eax + esi*2 + 0x1e5], 3
jmp case.0x100c01bc.1
mov ecx, dword [ebp + 8]
mov al, byte [ecx + esi*2 + 0x1e5]
and al, 0xfc
or al, 1
jmp 0x100c01ee
mov ecx, dword [ebp + 8]
mov al, byte [ecx + esi*2 + 0x1e5]
and al, 0xfc
or al, 2
mov byte [ecx + esi*2 + 0x1e5], al
inc esi
cmp esi, 8
jne 0x100c0143
xor esi, esi
mov al, 1
mov dword [ebp - 0x2c], eax
xor ebx, ebx
mov ecx, dword [edi]
push ebx
push esi
call fcn.100bc3f0
test al, al
je 0x100c024d
xor edx, edx
inc edx
mov ecx, ebx
shl edx, cl
mov ecx, dword [ebp + 8]
mov al, byte [ecx + esi*2 + 0x1e0]
or al, dl
mov byte [ecx + esi*2 + 0x1e0], al
cmp byte [ebp - 0x30], 0
je 0x100c024d
shl dl, 4
mov ecx, eax
and cl, 0xf0
or cl, dl
and al, 0xf
or al, cl
mov ecx, dword [ebp + 8]
mov byte [ecx + esi*2 + 0x1e0], al
inc ebx
cmp ebx, 4
jne 0x100c0208
xor esi, esi
inc esi
test byte [ebp - 0x2c], 1
mov eax, 0
jne 0x100c0203
mov ecx, dword [edi]
call fcn.100bb778
test al, al
je 0x100c0346
mov edx, dword [ebp + 8]
mov al, byte [edx + 0x1f4]
and al, 0xf0
or al, 1
movzx eax, al
cmp byte [ebp - 0x25], 0
mov ecx, 0x11
cmove ecx, eax
mov byte [edx + 0x1f4], cl
jmp 0x100c0346
xor bh, 1
and bh, bl
mov byte [ebp - 0x2c], bh
xor esi, esi
xor ebx, ebx
mov eax, dword [edi]
mov ecx, dword [eax + 0x16344]
push ebx
push esi
call fcn.1011b282
mov cl, byte [eax]
cmp cl, 0xff
je 0x100c031a
cmp cl, 0xa
je 0x100c02e0
xor eax, eax
inc eax
cmp cl, 5
jne 0x100c0322
mov ecx, ebx
shl eax, cl
mov ecx, dword [ebp + 8]
mov cl, byte [ecx + esi*2 + 0x1e0]
mov edx, ecx
or dl, al
cmp byte [ebp - 0x2c], 0
jne 0x100c0303
jmp 0x100c0310
cmp byte [eax + 3], 0
setne ch
xor eax, eax
inc eax
mov cl, bl
shl eax, cl
or ch, byte [ebp - 0x30]
mov edx, dword [ebp + 8]
mov cl, byte [edx + esi*2 + 0x1e0]
mov edx, ecx
or dl, al
test ch, ch
je 0x100c0310
and dl, 0xf
shl al, 4
and cl, 0xf0
or cl, al
or dl, cl
mov eax, dword [ebp + 8]
mov byte [eax + esi*2 + 0x1e0], dl
inc ebx
cmp ebx, 4
jne 0x100c02a3
jmp 0x100c033c
mov ecx, ebx
shl eax, cl
mov ecx, dword [ebp + 8]
mov cl, byte [ecx + esi*2 + 0x1e0]
mov edx, ecx
or dl, al
cmp byte [ebp - 0x25], 0
jne 0x100c0303
jmp 0x100c0310
inc esi
cmp esi, 0x20
jne 0x100c02a1
mov eax, dword [ebp + 8]
test byte [eax + 0x58], 1
je 0x100c038e
xor esi, esi
mov edi, dword [ebp - 0x34]
mov ebx, 4
mov eax, dword [edi]
mov ecx, dword [eax + 0x16344]
push 0
push esi
call fcn.1011b282
mov al, byte [eax + 2]
mov edx, dword [ebp + 8]
mov cl, byte [edx + esi*2 + 0x1e1]
shl al, 2
and cl, 0xfb
or cl, al
mov byte [edx + esi*2 + 0x1e1], cl
dec ebx
jne 0x100c0359
inc esi
cmp esi, 0x20
jne 0x100c0354
xorps xmm0, xmm0
xor eax, eax
mov esi, dword [ebp + 8]
movups xmm1, xmmword [esi + eax*4]
xorps xmm0, xmm1
add eax, 4
cmp eax, 0x88
jne 0x100c0396
pshufd xmm1, xmm0, 0xee
pxor xmm1, xmm0
pshufd xmm0, xmm1, 0x55
pxor xmm0, xmm1
movd dword [esi + 0x220], xmm0
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.101d7611
mov eax, esi
add esp, 0x30
pop esi
pop edi
pop ebx
pop ebp
ret 4
xor eax, eax
jmp 0x100bfe95