Function at 0x10012a40
Capabilities:
Encode data using xor

Disassembly:
mov eax, 0xbc8
call fcn.10024ea0
push ebx
push ebp
push esi
mov esi, dword [esp + 0xbd8]
xor ebx, ebx
push edi
mov ebp, dword [esi + 0x130]
mov dword [esp + 0x10], ebx
mov dword [esp + 0x30], ebp
cmp dword [ebp + 0x21d14], ebx
jg 0x10012a7b
pop edi
pop esi
pop ebp
or eax, 0xffffffff
pop ebx
add esp, 0xbc8
ret
mov ecx, 0x2d0
xor eax, eax
lea edi, [esp + 0x98]
push 2
rep stosd dword es:[edi], eax
mov edi, dword [esp + 0xbe4]
push ebx
push edi
call fcn.10024ecf
push edi
call fcn.10025391
add esp, 0x10
cmp eax, ebx
mov dword [esp + 0x2c], eax
jne 0x10012aba
pop edi
pop esi
pop ebp
or eax, 0xffffffff
pop ebx
add esp, 0xbc8
ret
push ebx
push ebx
push edi
call fcn.10024ecf
push edi
push 0xa
lea eax, [esp + 0x34]
push 1
push eax
call fcn.10025638
push 3
lea ecx, [esp + 0x40]
push 0x10038eb4
push ecx
call fcn.10025600
add esp, 0x28
test eax, eax
jne 0x10012b1d
mov dl, byte [esp + 0x26]
mov al, byte [esp + 0x27]
mov cl, byte [esp + 0x28]
and edx, 0x7f
shl edx, 7
and eax, 0x7f
and ecx, 0x7f
or edx, eax
mov al, byte [esp + 0x29]
shl edx, 7
or edx, ecx
and eax, 0x7f
shl edx, 7
or edx, eax
add edx, 0xa
mov dword [esp + 0x14], edx
jmp 0x10012b21
mov dword [esp + 0x14], ebx
mov ecx, dword [esp + 0x14]
push ebx
add ecx, dword [esi + 0x134]
push ecx
push edi
call fcn.10024ecf
push edi
push 1
lea edx, [esp + 0xac]
push 4
push edx
call fcn.10025638
mov bl, byte [esp + 0xb5]
mov eax, dword [esi + 0x118]
add esp, 0x1c
and bl, 0xf1
cmp eax, 1
mov byte [esp + 0x98], 0xff
jne 0x10012b6c
mov ecx, 0x80
jmp 0x10012b81
mov edi, dword [esi + 0xc]
xor ecx, ecx
cmp edi, 0x3e80
setge cl
dec ecx
and ecx, 0xffffffe0
add ecx, 0x40
mov edx, dword [esi + 0x88]
test edx, edx
jne 0x10012b8e
mov ecx, dword [esi + 0x44]
mov edx, dword [esi + 0x38]
test edx, edx
je 0x10012b99
xor al, al
jmp 0x10012baa
mov edx, dword [esi + 0xc]
push edx
push eax
push ecx
call fcn.10005780
add esp, 0xc
shl al, 4
cmp dword [esi + 0x118], 1
jne 0x10012bd2
mov cl, byte [esp + 0x9a]
or bl, 0xa
and cl, 0xd
mov byte [esp + 0x99], bl
or cl, al
mov byte [esp + 0x9a], cl
jmp 0x10012bef
mov dl, byte [esp + 0x9a]
or bl, 2
and dl, 0xd
mov byte [esp + 0x99], bl
or dl, al
mov byte [esp + 0x9a], dl
mov ecx, 0x19
xor eax, eax
lea edi, [esp + 0x34]
rep stosd dword es:[edi], eax
mov eax, dword [esi + 0x38]
test eax, eax
je 0x10012c36
mov edi, 1
mov ecx, 0xff
mov eax, 0x51eb851f
imul ecx
sar edx, 5
mov eax, edx
add ecx, 0xff
shr eax, 0x1f
add edx, eax
mov byte [esp + edi + 0x34], dl
inc edi
cmp ecx, 0x639c
jl 0x10012c0d
jmp 0x10012ccd
mov eax, dword [ebp + 0x21d14]
test eax, eax
mov dword [esp + 0x18], eax
jle 0x10012ccd
mov edi, 1
mov dword [esp + 0x1c], edi
fild dword [esp + 0x1c]
sub esp, 8
fmul dword [0x100308f8]
fimul dword [esp + 0x20]
fstp qword [esp]
call fcn.10024f5b
add esp, 8
call fcn.100239a0
mov ecx, dword [ebp + 0x21d14]
mov dword [esp + 0x18], ecx
dec ecx
cmp eax, ecx
jle 0x10012c83
mov eax, ecx
mov ecx, dword [ebp + 0x21d1c]
fild dword [ecx + eax*4]
fmul qword [0x100308f0]
fild dword [ebp + 0x21d08]
cmp dword [0x100535ac], 0
jne 0x10012ca5
fdivp st(1)
jmp 0x10012cae
push eax
mov al, 0xd
call fcn.10023f57
pop eax
call fcn.100239a0
cmp eax, 0xff
jle 0x10012cbf
mov eax, 0xff
mov byte [esp + edi + 0x34], al
inc edi
cmp edi, 0x64
mov dword [esp + 0x1c], edi
jl 0x10012c51
mov eax, dword [esi + 0x54]
mov ebp, dword [ebp + 0xdc00]
test eax, eax
je 0x10012cdd
sub ebp, 2
mov eax, dword [esi + 0x88]
test eax, eax
jne 0x10012d1f
mov dl, byte [str.Info]
mov al, byte [0x100308d5]
mov cl, byte [0x100308d6]
mov byte [esp + ebp + 0x98], dl
inc ebp
mov dl, byte [0x100308d7]
mov byte [esp + ebp + 0x98], al
inc ebp
mov byte [esp + ebp + 0x98], cl
inc ebp
mov byte [esp + ebp + 0x98], dl
jmp 0x10012d54
mov al, byte [str.Xing]
mov cl, byte [0x100308cd]
mov dl, byte [0x100308ce]
mov byte [esp + ebp + 0x98], al
inc ebp
mov al, byte [0x100308cf]
mov byte [esp + ebp + 0x98], cl
inc ebp
mov byte [esp + ebp + 0x98], dl
inc ebp
mov byte [esp + ebp + 0x98], al
inc ebp
mov byte [esp + ebp + 0x98], 0
mov byte [esp + ebp + 0x99], 0
mov byte [esp + ebp + 0x9a], 0
mov byte [esp + ebp + 0x9b], 0xf
mov eax, dword [esi + 0x138]
add ebp, 4
mov ecx, eax
mov edx, eax
sar ecx, 0x18
mov byte [esp + ebp + 0x98], cl
mov ecx, eax
sar edx, 0x10
mov byte [esp + ebp + 0x9b], al
mov eax, dword [esp + 0x2c]
sar ecx, 8
mov byte [esp + ebp + 0x99], dl
mov byte [esp + ebp + 0x9a], cl
mov edx, eax
add ebp, 4
sar edx, 0x18
mov byte [esp + ebp + 0x98], dl
mov ecx, eax
mov edx, eax
mov byte [esp + ebp + 0x9b], al
sar ecx, 0x10
sar edx, 8
mov byte [esp + ebp + 0x99], cl
mov byte [esp + ebp + 0x9a], dl
add ebp, 4
mov ecx, 0x19
lea esi, [esp + 0x34]
lea edi, [esp + ebp + 0x98]
add ebp, 0x64
rep movsd dword es:[edi], dword [esi]
mov edi, dword [esp + 0xbdc]
mov eax, dword [edi + 0x54]
test eax, eax
je 0x10012e16
mov ecx, dword [esp + 0x30]
lea eax, [esp + 0x98]
push eax
push ecx
call fcn.10006150
add esp, 8
xor ecx, ecx
test ebp, ebp
jle 0x10012e4d
mov eax, dword [esp + 0x10]
xor edx, edx
mov dl, byte [esp + ecx + 0x98]
and eax, 0xffff
mov esi, eax
and esi, 0xff
xor edx, esi
sar eax, 8
mov edx, dword [edx*4 + 0x10038a8c]
xor edx, eax
inc ecx
cmp ecx, ebp
mov dword [esp + 0x10], edx
jl 0x10012e1c
mov eax, dword [esp + 0x10]
mov ebx, dword [esp + 0x14]
mov esi, dword [esp + 0xbe0]
push eax
lea ecx, [esp + ebp + 0x9c]
push ebx
push ecx
push esi
push edi
call fcn.100125b0
push 0
push ebx
push esi
call fcn.10024ecf
mov edx, dword [edi + 0x134]
push esi
push 1
lea eax, [esp + 0xc0]
push edx
push eax
call fcn.100254e9
add esp, 0x30
dec eax
neg eax
pop edi
pop esi
pop ebp
pop ebx
sbb eax, eax
add esp, 0xbc8
ret