Function at 0x100d0d0e
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x58
mov eax, dword [ecx + 0x2750]
mov esi, dword [esp + 0x6c]
lea ebp, [ecx + 0x2750]
cmp dword [eax + 0x16348], 0
jne 0x100d0dd7
mov edi, ecx
call fcn.100d0672
cmp byte [edi + 0x2ea8], 0
je 0x100d0dd7
lea eax, [edi + 0x2a58]
lea ecx, [edi + 0x2a98]
mov dword [esp], edi
lea esi, [edi + 0x1c9c]
xor edi, edi
mov dword [esp + 8], eax
mov dword [esp + 4], ecx
mov ecx, dword [ebp]
push edi
call fcn.100b3968
test al, al
je 0x100d0dc0
mov ecx, dword [ebp]
push edi
call fcn.100b33de
mov ebx, eax
push dword [esp + 8]
push dword [esp + 8]
lea eax, [esp + 0x20]
push eax
call fcn.100b6343
add esp, 0xc
push ebx
lea eax, [esp + 0x1c]
push eax
lea eax, [esp + 0x14]
push eax
call fcn.100b8b68
add esp, 0xc
mov eax, dword [esp + 0xc]
mov dword [esi - 0xc], eax
mov eax, dword [esp + 0x10]
mov dword [esi - 8], eax
mov eax, dword [esp + 0x14]
mov dword [esi - 4], eax
mov dword [esi], 0x3f800000
inc edi
add esi, 0x10
cmp edi, 8
jne 0x100d0d65
mov eax, dword [esp]
mov esi, dword [esp + 0x6c]
mov byte [eax + 0x2ea8], 0
lea edi, [esi + 0x74]
mov esi, 0x1c0
mov ecx, edi
call fcn.1003507c
add edi, 0x1c
add esi, 0xffffffe4
jne 0x100d0ddf
push 0x400
push 0
mov edi, dword [esp + 0x74]
push edi
call fcn.1019fc10
add esp, 0xc
mov ecx, dword [ebp]
mov eax, dword [ecx + 0x16348]
test eax, eax
je 0x100d0e26
mov ecx, eax
call fcn.10120384
mov ecx, dword [ebp]
mov esi, eax
sar esi, 0x1f
lea edx, [ecx + 0x16348]
jmp 0x100d0e30
lea edx, [ecx + 0x16348]
xor eax, eax
xor esi, esi
mov dword [edi], eax
mov dword [edi + 4], esi
cmp dword [ecx + 0x16348], 0
je 0x100d0e42
xor eax, eax
jmp 0x100d0e5b
call fcn.100b3628
mov ecx, dword [ebp]
movzx eax, ax
cmp eax, 0x300
setb al
lea edx, [ecx + 0x16348]
mov bl, byte [edi + 8]
xor esi, esi
and bl, 0xfe
or bl, al
mov byte [edi + 8], bl
mov eax, dword [edx]
test eax, eax
je 0x100d0e83
mov ecx, eax
call fcn.10150058
mov ecx, dword [ebp]
mov bl, byte [edi + 8]
lea edx, [ecx + 0x16348]
jmp 0x100d0e85
xor eax, eax
add al, al
and bl, 0xfd
or bl, al
mov byte [edi + 8], bl
mov eax, dword [edx]
test eax, eax
je 0x100d0e9b
mov esi, dword [eax + 0x2f8]
mov eax, dword [edi + 0xc]
and esi, 0x3f
and eax, 0xffffffc0
or eax, esi
mov dword [edi + 0xc], eax
mov edx, dword [edx]
test edx, edx
je 0x100d0ebd
mov edx, dword [edx + 0x2fc]
and edx, 0x3f
shl edx, 6
jmp 0x100d0ec2
mov edx, 0x2c0
and eax, 0xfffff03f
or eax, edx
mov dword [edi + 0xc], eax
call fcn.100b3d5a
mov ecx, 0xffff8fff
and eax, 7
and ecx, dword [edi + 0xc]
shl eax, 0xc
or ecx, eax
mov dword [edi + 0xc], ecx
mov ecx, dword [ebp]
call fcn.100b3d42
mov cl, byte [edi + 0x10]
and cl, 0xfe
or cl, al
mov byte [edi + 0x10], cl
mov ecx, dword [ebp]
call fcn.100b3950
mov cl, byte [edi + 0x10]
add al, al
and cl, 0xfd
or cl, al
mov byte [edi + 0x10], cl
mov ecx, dword [ebp]
call fcn.100b3d86
mov cl, byte [edi + 0x10]
shl al, 2
and cl, 0xfb
or cl, al
mov byte [edi + 0x10], cl
mov ecx, dword [ebp]
call fcn.100b3742
mov cl, byte [edi + 0x10]
shl al, 3
and cl, 0xf7
or cl, al
mov byte [edi + 0x10], cl
mov ecx, dword [ebp]
call fcn.100b3f26
mov cl, byte [edi + 0x10]
shl al, 4
and cl, 0xef
or cl, al
mov byte [edi + 0x10], cl
mov ecx, dword [ebp]
call fcn.100b4024
mov cl, byte [edi + 0x10]
shl al, 5
and cl, 0xdf
or cl, al
mov byte [edi + 0x10], cl
mov ecx, dword [ebp]
call fcn.100b391e
mov cl, byte [edi + 0x10]
shl al, 6
and cl, 0xbf
or cl, al
mov byte [edi + 0x10], cl
mov ecx, dword [ebp]
push 0
call fcn.100b3968
mov ecx, dword [ebp]
movzx esi, al
xor eax, eax
inc eax
push eax
call fcn.100b3968
mov ecx, dword [ebp]
movzx eax, al
lea esi, [esi + eax*2]
push 2
call fcn.100b3968
mov ecx, dword [ebp]
movzx eax, al
lea esi, [esi + eax*4]
mov eax, 3
push eax
call fcn.100b3968
mov ecx, dword [ebp]
movzx eax, al
lea edi, [esi + eax*8]
push 4
call fcn.100b3968
mov ecx, dword [ebp]
movzx esi, al
shl esi, 4
or esi, edi
push 5
call fcn.100b3968
mov ecx, dword [ebp]
movzx edi, al
shl edi, 5
push 6
call fcn.100b3968
mov ecx, dword [ebp]
movzx ebx, al
shl ebx, 6
or ebx, edi
push 7
call fcn.100b3968
mov edi, dword [esp + 0x6c]
mov ecx, 0xffffff00
movzx eax, al
shl eax, 7
or eax, ebx
and ecx, dword [edi + 0x14]
or ecx, eax
or ecx, esi
mov dword [edi + 0x14], ecx
mov ecx, dword [ebp]
call fcn.100b3992
mov ecx, 0xfffffcff
and eax, 3
and ecx, dword [edi + 0x14]
shl eax, 8
or ecx, eax
mov dword [edi + 0x14], ecx
mov ecx, dword [ebp]
call fcn.100b39d2
mov ecx, 0xfffff3ff
and eax, 3
and ecx, dword [edi + 0x14]
shl eax, 0xa
or ecx, eax
mov dword [edi + 0x14], ecx
mov ecx, dword [ebp]
call fcn.100b3a0e
mov ecx, 0xffffcfff
and eax, 3
and ecx, dword [edi + 0x14]
shl eax, 0xc
or ecx, eax
mov dword [edi + 0x14], ecx
mov ecx, dword [ebp]
call fcn.100b3a4a
mov ecx, 0xffff3fff
and eax, 3
and ecx, dword [edi + 0x14]
shl eax, 0xe
or ecx, eax
mov dword [edi + 0x14], ecx
mov ecx, dword [ebp]
call fcn.100b35a6
mov cl, byte [edi + 0x18]
and cl, 0xfe
or cl, al
mov byte [edi + 0x18], cl
mov ecx, dword [ebp]
call fcn.100b3d9e
mov ecx, dword [edi + 0x1c]
and eax, 3
and ecx, 0xfffffffc
or ecx, eax
mov dword [edi + 0x1c], ecx
mov ecx, dword [ebp]
call fcn.100b3dc2
mov cl, byte [edi + 0x20]
and cl, 0xfe
or cl, al
mov byte [edi + 0x20], cl
mov ecx, dword [ebp]
call fcn.100b3d6e
mov cl, byte [edi + 0x20]
add al, al
and cl, 0xfd
or cl, al
mov byte [edi + 0x20], cl
mov ecx, dword [ebp]
call fcn.100b363a
mov cl, byte [edi + 0x20]
shl al, 2
and cl, 0xfb
or cl, al
mov byte [edi + 0x20], cl
mov ecx, dword [ebp]
call fcn.100b3682
mov cl, byte [edi + 0x20]
shl al, 3
mov dl, byte [edi + 0x30]
and cl, 0xf7
and dl, 0xfb
or cl, al
mov byte [edi + 0x20], cl
mov ecx, dword [ebp]
mov al, byte [ecx + 0x16274]
shl al, 2
or dl, al
mov byte [edi + 0x30], dl
call fcn.100b4244
xor esi, esi
mov cl, byte [edi + 0x30]
inc esi
cmp eax, esi
setg al
shl al, 3
and cl, 0xf7
or cl, al
mov byte [edi + 0x30], cl
mov ecx, dword [ebp]
call fcn.100b4226
cmp eax, esi
mov ah, byte [edi + 0x30]
mov dl, byte [edi + 0x20]
mov ebx, 3
setg al
shl al, 4
and ah, 0xef
and dl, 0xef
or ah, al
mov byte [edi + 0x30], ah
mov ecx, dword [ebp]
mov al, byte [ecx + 0x163d2]
shl al, 4
or dl, al
mov byte [edi + 0x20], dl
mov edx, dword [esp + 0x70]
movsd xmm0, qword [ecx + 0x163d8]
and edx, 0xf
cmp edx, ebx
movsd qword [edi + 0x28], xmm0
lea ebx, [edi + 0x234]
seta al
cmp edx, esi
mov esi, 0x16001
sbb al, 0
and ah, 0xfc
add al, 2
and al, 3
or ah, al
mov byte [edi + 0x30], ah
xor edi, edi
mov eax, dword [ecx + esi - 5]
mov edx, dword [ebx]
and eax, 0xf
and edx, 0xfffffff0
or edx, eax
mov dword [ebx], edx
and edx, 0xffffff8f
mov eax, dword [ecx + esi - 1]
shl eax, 4
and eax, 0x70
or edx, eax
mov dword [ebx], edx
mov al, byte [ebx + 4]
and al, 0xfe
or al, byte [ecx + esi]
mov byte [ebx + 4], al
mov eax, dword [ecx + 0x16348]
test eax, eax
je 0x100d11e1
mov ecx, eax
push edi
call fcn.1015010c
mov ecx, dword [ebp]
jmp 0x100d11e3
xor eax, eax
mov edx, dword [ebx + 8]
and al, 3
inc edi
add esi, 0x14
movzx eax, al
and edx, 0xfffffffc
or edx, eax
mov dword [ebx + 8], edx
add ebx, 0xc
cmp edi, 0x20
jne 0x100d119e
cmp dword [ecx + 0x16348], 0
je 0x100d1272
mov eax, dword [esp + 0x6c]
xor edi, edi
mov ebx, 0xb370
lea esi, [eax + 0x74]
jmp 0x100d1225
mov ecx, dword [ebp]
inc edi
add ebx, 0xac0
add esi, 0x1c
mov ecx, dword [ecx + 0x16348]
push edi
call fcn.10120372
test al, al
je 0x100d126b
mov ecx, dword [ebp]
lea eax, [esp + 0x18]
add ecx, ebx
push eax
call fcn.100c0040
mov eax, dword [esp + 0x30]
movsd xmm0, qword [esp + 0x28]
movsd xmm2, qword [esp + 0x18]
movsd xmm1, qword [esp + 0x20]
mov dword [esi + 0x18], eax
movsd qword [esi + 0x10], xmm0
movsd qword [esi + 8], xmm1
movsd qword [esi], xmm2
cmp edi, 0xf
jne 0x100d1218
jmp 0x100d12cc
xor esi, esi
jmp 0x100d127a
mov ecx, dword [ebp]
inc esi
mov edi, dword [esp + 0x6c]
push esi
call fcn.100b3de8
mov ecx, dword [edi + esi*8 + 0x34]
and eax, 7
and ecx, 0xfffffff8
or ecx, eax
mov dword [edi + esi*8 + 0x34], ecx
mov ecx, dword [ebp]
push esi
call fcn.100b3e16
mov cl, byte [edi + esi*8 + 0x38]
and al, 7
and cl, 0xf8
or cl, al
mov byte [edi + esi*8 + 0x38], cl
mov ecx, dword [ebp]
push esi
call fcn.100b3e44
mov cl, byte [edi + esi*8 + 0x38]
shl al, 3
and al, 0x38
and cl, 0xc7
or cl, al
cmp esi, 7
mov byte [edi + esi*8 + 0x38], cl
jne 0x100d1276
mov ecx, dword [ebp]
mov eax, dword [ecx + 0x16348]
test eax, eax
je 0x100d13ac
mov edi, dword [esp + 0x6c]
xor ebx, ebx
xor esi, esi
inc esi
jmp 0x100d12f2
mov eax, dword [ebp]
inc ebx
mov eax, dword [eax + 0x16348]
mov ecx, eax
push 0
push ebx
call fcn.1015011a
mov cl, 0xff
cmp byte [eax], cl
mov cl, byte [edi + ebx*2 + 0x3b4]
setne al
and cl, 0xfe
or cl, al
mov byte [edi + ebx*2 + 0x3b4], cl
mov eax, dword [ebp]
mov ecx, dword [eax + 0x16348]
push esi
push ebx
call fcn.1015011a
mov cl, 0xff
cmp byte [eax], cl
mov cl, byte [edi + ebx*2 + 0x3b4]
setne al
and cl, 0xfd
add al, al
or cl, al
mov byte [edi + ebx*2 + 0x3b4], cl
mov eax, dword [ebp]
mov ecx, dword [eax + 0x16348]
push 2
push ebx
call fcn.1015011a
mov cl, 0xff
cmp byte [eax], cl
mov cl, byte [edi + ebx*2 + 0x3b4]
setne al
and cl, 0xfb
shl al, 2
or cl, al
mov byte [edi + ebx*2 + 0x3b4], cl
mov eax, dword [ebp]
mov ecx, dword [eax + 0x16348]
push 3
push ebx
call fcn.1015011a
mov cl, 0xff
cmp byte [eax], cl
mov cl, byte [edi + ebx*2 + 0x3b4]
setne al
and cl, 0xf7
shl al, 3
or cl, al
cmp ebx, 0x21
mov byte [edi + ebx*2 + 0x3b4], cl
jne 0x100d12e8
jmp 0x100d1496
cmp byte [ecx + 0x16274], 0
je 0x100d13cb
call fcn.100b3628
movzx eax, ax
cmp eax, 0x2ff
ja 0x100d14e2
mov ecx, dword [ebp]
mov edi, dword [esp + 0x6c]
or byte [edi + 0x3b4], 0xf
call fcn.100b3f26
mov ecx, dword [ebp]
test al, al
je 0x100d13fb
cmp byte [ecx + 0x16354], 0
jne 0x100d13f4
cmp byte [ecx + 0x16064], 0
je 0x100d13fb
or byte [edi + 0x3b6], 0xf
call fcn.100b4024
test al, al
je 0x100d140b
or byte [edi + 0x3b8], 0xf
mov ecx, dword [ebp]
xor esi, esi
mov bl, 1
push 0
push esi
call fcn.100b3762
test al, al
je 0x100d1425
or byte [edi + esi*2 + 0x3ba], bl
mov ecx, dword [ebp]
push 1
push esi
call fcn.100b3762
test al, al
je 0x100d143c
or byte [edi + esi*2 + 0x3ba], 2
mov ecx, dword [ebp]
push 2
push esi
call fcn.100b3762
test al, al
je 0x100d1453
or byte [edi + esi*2 + 0x3ba], 4
mov ecx, dword [ebp]
push 3
push esi
call fcn.100b3762
test al, al
je 0x100d146a
or byte [edi + esi*2 + 0x3ba], 8
mov ecx, dword [ebp]
inc esi
cmp esi, 8
jne 0x100d1412
call fcn.100b35a6
test al, al
je 0x100d1483
or byte [edi + 0x3ca], 1
mov ecx, dword [ebp]
call fcn.100b363a
test al, al
je 0x100d1496
or byte [edi + 0x3ca], 2
mov ecx, dword [ebp]
call fcn.100b4214
movzx eax, ax
cmp eax, 0x2ff
ja 0x100d14bd
mov al, 0xf
or byte [edi + 0x3b7], al
or byte [edi + 0x3b9], al
or byte [edi + 0x3cb], 1
xor eax, eax
mov ecx, 0xfffffc08
xor eax, dword [edi + ecx + 0x3f8]
add ecx, 4
jne 0x100d14c4
mov dword [edi + 0x3f8], eax
mov eax, edi
add esp, 0x58
pop esi
pop edi
pop ebx
pop ebp
ret 8
mov edi, dword [esp + 0x6c]
mov edx, 0xffffffd8
or byte [edi + 0x3b4], 0xf
lea ecx, [edi + 0x3b6]
mov eax, dword [ebp]
cmp byte [eax + edx + 0x1608c], 0
je 0x100d1508
or byte [ecx], 0xf
add ecx, 2
add edx, 0x14
jne 0x100d14fb
lea ecx, [edi + 0x3ba]
mov edx, 0xffffff60
cmp byte [eax + edx + 0x1612c], 0
je 0x100d1528
or byte [ecx], 0xf
add ecx, 2
add edx, 0x14
jne 0x100d151b
cmp byte [eax + 0x16050], 0
jne 0x100d148f
jmp 0x100d1496