Function at 0x10099c60
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
sub esp, 0x98
mov eax, dword [ebp + 0x10]
mov eax, dword [ebp + 0xc]
mov eax, esp
mov dword [ebp - 0x1c], eax
mov dword [ebp - 0x10], 0xffffffff
lea eax, [ebp - 0x18]
mov dword [ebp - 0x14], 0x1009a960
mov edx, dword fs:[0]
mov dword [ebp - 0x18], edx
mov dword fs:[0], eax
mov dword [ebp - 0x24], ecx
mov eax, dword [ebp - 0x24]
mov dword [ebp - 0x74], eax
mov dword [ebp - 0x20], eax
mov ecx, dword [ebp + 0xc]
call fcn.1002ec60
mov ecx, dword [ebp - 0x74]
lea edx, [ebp - 0x28]
mov dl, byte [edx]
mov byte [esp], dl
mov dword [esp + 4], eax
call fcn.1009a230
sub esp, 8
mov eax, dword [ebp - 0x74]
mov dword [ebp - 0x2c], eax
mov eax, dword [ebp + 0xc]
mov dword [ebp - 0x30], eax
mov eax, dword [ebp + 0x10]
mov dword [ebp - 0x34], eax
mov ecx, dword [ebp - 0x30]
call fcn.1002e980
mov ecx, dword [ebp - 0x34]
call fcn.1002e980
mov eax, dword [ebp - 0x30]
mov eax, dword [eax + 0x10]
mov dword [ebp - 0x38], eax
mov eax, dword [ebp - 0x34]
mov eax, dword [eax + 0x10]
mov dword [ebp - 0x3c], eax
mov eax, dword [ebp - 0x30]
mov eax, dword [eax + 0x14]
mov dword [ebp - 0x40], eax
mov eax, dword [ebp - 0x34]
mov eax, dword [eax + 0x14]
mov dword [ebp - 0x44], eax
mov eax, dword [ebp - 0x38]
add eax, dword [ebp - 0x3c]
mov dword [ebp - 0x48], eax
mov eax, dword [ebp - 0x3c]
mov ecx, dword [ebp - 0x40]
mov esi, dword [ebp - 0x38]
mov edx, ecx
xor edx, 0xffffffff
and edx, esi
xor esi, 0xffffffff
and ecx, esi
sub ecx, edx
cmp eax, ecx
setbe al
and al, 1
mov byte [ebp - 0x49], al
test byte [ebp - 0x49], 1
je 0x10099e30
mov eax, dword [0x1028a37c]
or eax, dword [0x1028a380]
mov ecx, eax
and ecx, 0x60106d8d
xor eax, 0x60106d8d
or ecx, eax
and ecx, 0x11af1b8
mov eax, ecx
xor eax, 0xffffffff
and eax, 0x55b5bef1
and ecx, 0xaa4a410e
or eax, ecx
cmp eax, 0x66926e9e
jae 0x1009a16c
mov eax, dword [ebp - 0x44]
cmp eax, dword [ebp - 0x40]
ja 0x10099e30
mov eax, dword [0x1028a394]
xor edx, edx
div dword [0x1028a398]
sub eax, 0x8a1bf6d
mov ecx, 0x79b5f435
xor edx, edx
div ecx
mov ecx, eax
and ecx, 0x4b50e20a
mov edx, eax
xor edx, 0xb4af1df5
add eax, edx
sub eax, ecx
mov dword [ebp - 0x78], eax
mov ecx, dword [ebp - 0x2c]
lea eax, [0x1022b994]
mov dword [esp], eax
call fcn.1002f720
sub esp, 4
mov ecx, dword [ebp - 0x74]
mov eax, dword [ebp + 0xc]
mov dword [esp], eax
call fcn.1002f8d0
sub esp, 4
mov ecx, dword [ebp - 0x2c]
call fcn.1003c990
mov dword [ebp - 0x50], eax
mov eax, dword [ebp - 0x3c]
add eax, 1
mov dword [ebp - 0x7c], eax
mov ecx, dword [ebp - 0x34]
call fcn.1003c990
mov ecx, eax
mov eax, dword [ebp - 0x7c]
mov edx, dword [ebp - 0x50]
add edx, dword [ebp - 0x38]
mov dword [esp], edx
mov dword [esp + 4], ecx
mov dword [esp + 8], eax
call fcn.1002a100
mov eax, dword [ebp - 0x78]
mov edx, dword [ebp - 0x48]
mov ecx, dword [ebp - 0x2c]
mov dword [ecx + 0x10], edx
cmp eax, 0x9034a9d4
jbe 0x10099d86
jmp 0x1009a152
mov eax, dword [ebp - 0x38]
mov ecx, dword [ebp - 0x44]
sub ecx, dword [ebp - 0x3c]
cmp eax, ecx
setbe al
and al, 1
mov byte [ebp - 0x51], al
mov ecx, dword [ebp + 0x10]
call fcn.1002ec60
mov ecx, dword [ebp - 0x74]
mov dword [ebp - 0x80], eax
call fcn.1002ec60
mov ecx, eax
mov eax, dword [ebp - 0x80]
mov dword [esp], ecx
mov dword [esp + 4], eax
call fcn.1009a390
test al, 1
jne 0x10099e74
jmp 0x10099f9f
mov ecx, dword [0x1028a39c]
mov eax, dword [0x1028a3a0]
sub ecx, 0x72cb9b63
sub ecx, eax
add ecx, 0x72cb9b63
sub ecx, 0x9b4ced55
mov eax, ecx
and eax, 0x727bb4b3
or ecx, 0x727bb4b3
add eax, ecx
add eax, 0x749f3b4e
add eax, 1
cmp eax, 0x9911088f
jbe 0x1009a171
test byte [ebp - 0x51], 1
je 0x10099f9f
mov eax, dword [0x1028a3ac]
and eax, dword [0x1028a3b0]
mov ecx, 0xf40de6e
xor edx, edx
div ecx
mov ecx, eax
mov eax, ecx
or eax, 0x1d14b4b4
xor eax, 0xffffffff
or ecx, 0x1d14b4b4
xor ecx, 0xffffffff
or eax, ecx
xor eax, 0xffffffff
add eax, 0x16596129
sub eax, 0x8b75086b
sub eax, 0x16596129
cmp eax, 0x29ab3188
je 0x1009a176
mov ecx, dword [ebp - 0x2c]
lea eax, [0x1022b994]
mov dword [esp], eax
call fcn.1002f720
sub esp, 4
mov ecx, dword [ebp - 0x74]
mov eax, dword [ebp + 0x10]
mov dword [esp], eax
call fcn.1002f8d0
sub esp, 4
mov eax, dword [ebp - 0x2c]
mov eax, dword [eax]
mov dword [esp], eax
call fcn.10029db0
mov dword [ebp - 0x58], eax
mov eax, dword [ebp - 0x3c]
sub eax, 0xdf653eaf
add eax, 1
add eax, 0xdf653eaf
mov ecx, dword [ebp - 0x58]
mov edx, dword [ebp - 0x58]
add edx, dword [ebp - 0x38]
mov dword [esp], edx
mov dword [esp + 4], ecx
mov dword [esp + 8], eax
call fcn.1003cc70
mov eax, dword [ebp - 0x38]
mov dword [ebp - 0x84], eax
mov ecx, dword [ebp - 0x30]
call fcn.1003c990
mov ecx, eax
mov eax, dword [ebp - 0x84]
mov edx, dword [ebp - 0x58]
mov dword [esp], edx
mov dword [esp + 4], ecx
mov dword [esp + 8], eax
call fcn.1002a100
mov ecx, dword [ebp - 0x48]
mov eax, dword [ebp - 0x2c]
mov dword [eax + 0x10], ecx
jmp 0x1009a152
mov ecx, dword [ebp - 0x74]
call fcn.100306e0
mov dword [ebp - 0x5c], eax
mov eax, dword [ebp - 0x5c]
sub eax, dword [ebp - 0x38]
cmp eax, dword [ebp - 0x3c]
jae 0x1009a007
mov eax, dword [0x1028a3d4]
mov edx, dword [0x1028a3d8]
mov esi, eax
xor esi, edx
xor esi, 0xffffffff
mov ecx, edx
and ecx, esi
shl ecx, 1
sub ecx, edx
sub eax, ecx
or eax, 0xca2dade5
imul eax, eax, 0xb7101137
xor eax, 0xffffffff
or eax, 0xaeef5315
xor eax, 0xffffffff
cmp eax, 0x9db2cd0a
ja 0x1009a204
mov dword [ebp - 0x10], 0
call fcn.100309a0
jmp 0x1009a007
mov edx, dword [ebp - 0x5c]
mov ecx, dword [ebp - 0x48]
mov eax, esp
mov dword [eax + 8], edx
mov dword [eax], ecx
mov dword [eax + 4], 0xf
call fcn.10030b30
mov dword [ebp - 0x60], eax
mov dword [ebp - 0x64], 0x1022b994
mov ecx, dword [ebp - 0x2c]
mov eax, esp
mov dword [eax + 4], ecx
mov dword [eax], 0x1022b994
lea ecx, [ebp - 0x65]
call fcn.100309c0
sub esp, 8
mov ecx, dword [ebp - 0x74]
call fcn.1002ec60
mov ecx, eax
mov dword [ebp - 0x10], 0
mov eax, esp
lea edx, [ebp - 0x60]
mov dword [eax + 4], edx
mov dword [eax], ecx
call fcn.100313a0
mov dword [ebp - 0x88], eax
jmp 0x1009a06e
mov eax, dword [ebp - 0x88]
mov ecx, dword [str.f_Jf]
or ecx, dword [0x1028a408]
or ecx, 0xd804d1a7
sub ecx, 0x1ff57bfe
or ecx, 0x48da3d51
mov dword [ebp - 0x8c], ecx
mov dword [ebp - 0x6c], eax
mov ecx, dword [ebp - 0x2c]
lea eax, [ebp - 0x6c]
mov dword [esp], ecx
mov dword [esp + 4], eax
call fcn.100315e0
mov ecx, dword [ebp - 0x48]
mov eax, dword [ebp - 0x2c]
mov dword [eax + 0x10], ecx
mov ecx, dword [ebp - 0x60]
mov eax, dword [ebp - 0x2c]
mov dword [eax + 0x14], ecx
mov eax, dword [ebp - 0x6c]
mov dword [esp], eax
call fcn.10029db0
mov dword [ebp - 0x70], eax
mov eax, dword [ebp - 0x38]
mov dword [ebp - 0x94], eax
mov ecx, dword [ebp - 0x30]
call fcn.1003c990
mov ecx, eax
mov eax, dword [ebp - 0x94]
mov edx, dword [ebp - 0x70]
mov dword [esp], edx
mov dword [esp + 4], ecx
mov dword [esp + 8], eax
call fcn.1002a100
mov eax, dword [ebp - 0x3c]
mov ecx, eax
and ecx, 1
shl ecx, 1
xor eax, 1
add eax, ecx
mov dword [ebp - 0x90], eax
mov ecx, dword [ebp - 0x34]
call fcn.1003c990
mov ecx, eax
mov eax, dword [ebp - 0x90]
mov edx, dword [ebp - 0x70]
add edx, dword [ebp - 0x38]
mov dword [esp], edx
mov dword [esp + 4], ecx
mov dword [esp + 8], eax
call fcn.1002a100
lea ecx, [ebp - 0x65]
call fcn.100309e0
mov eax, dword [ebp - 0x8c]
cmp eax, 0xc616442c
jbe 0x1009a06e
jmp 0x1009a152
mov eax, dword [ebp - 0x20]
mov ecx, dword [ebp - 0x18]
mov dword fs:[0], ecx
add esp, 0x98
pop esi
pop edi
pop ebx
pop ebp
ret 0xc
jmp 0x10099d7a
jmp 0x10099eb5
mov ecx, dword [ebp - 0x2c]
lea eax, [0x1022b994]
mov dword [esp], eax
call fcn.1002f720
sub esp, 4
mov ecx, dword [ebp - 0x74]
mov eax, dword [ebp + 0x10]
mov dword [esp], eax
call fcn.1002f8d0
sub esp, 4
mov eax, dword [ebp - 0x2c]
mov eax, dword [eax]
mov dword [esp], eax
call fcn.10029db0
mov dword [ebp - 0x58], eax
mov eax, dword [ebp - 0x3c]
add eax, 1
mov ecx, dword [ebp - 0x58]
mov edx, dword [ebp - 0x58]
add edx, dword [ebp - 0x38]
mov dword [esp], edx
mov dword [esp + 4], ecx
mov dword [esp + 8], eax
call fcn.1003cc70
mov eax, dword [ebp - 0x38]
mov dword [ebp - 0x98], eax
mov ecx, dword [ebp - 0x30]
call fcn.1003c990
mov ecx, eax
mov eax, dword [ebp - 0x98]
mov edx, dword [ebp - 0x58]
mov dword [esp], edx
mov dword [esp + 4], ecx
mov dword [esp + 8], eax
call fcn.1002a100
mov ecx, dword [ebp - 0x48]
mov eax, dword [ebp - 0x2c]
mov dword [eax + 0x10], ecx
jmp 0x10099f07
jmp 0x10099fb9