Function at 0x10029c30
Capabilities:
Encode data using xor

Disassembly:
sub esp, 0xcf8
mov eax, dword [0x100a1040]
xor eax, esp
mov dword [esp + 0xcf4], eax
cmp dword [esp + 0xd10], 0
mov eax, dword [esp + 0xd08]
mov ecx, dword [esp + 0xd04]
push ebx
mov ebx, dword [esp + 0xd00]
push ebp
mov dword [esp + 0x44], eax
mov eax, dword [esp + 0xd14]
push esi
mov esi, dword [esp + 0xd0c]
mov dword [esp + 0x1c], eax
mov eax, dword [esp + 0xd20]
push edi
mov dword [esp + 0x28], esi
mov dword [esp + 0x38], ebx
mov dword [esp + 0x1c], ecx
mov dword [esp + 0x34], eax
jle 0x10029ca6
push 0x800
push eax
call fcn.10005890
mov ecx, dword [esp + 0x24]
add esp, 8
mov edx, dword [esi]
xor eax, eax
test edx, edx
jle 0x10029cbe
nop
mov dword [ecx + eax*4], 0x80000000
inc eax
mov edx, dword [esi]
cmp eax, edx
jl 0x10029cb0
mov ecx, 0x3c
lea edi, [esp + 0x144]
mov eax, 0x80000000
rep stosd dword es:[edi], eax
xor ecx, ecx
mov dword [esp + 0x18], ecx
test edx, edx
jle 0x10029fde
nop
xor edx, edx
mov dword [esp + 0x48], edx
cmp dword [esi + 8], edx
jle 0x10029fcd
lea eax, [ecx + 0x828]
lea edi, [ecx*4]
lea ecx, [esi + 0x1c]
mov dword [esp + 0x2c], edi
mov dword [esp + 0x44], ecx
lea eax, [ebx + eax*4]
lea ecx, [esi + 0x18]
mov dword [esp + 0x24], eax
mov dword [esp + 0x40], ecx
nop word [eax + eax]
mov ecx, dword [eax - 0x1e0]
lea ebp, [esp + 0x54]
mov eax, dword [eax]
mov dword [esp + 0x3c], ecx
mov dword [ebp + edi], eax
cmp eax, ecx
jle 0x10029fa9
mov eax, ecx
mov dword [esp + 0x14], 0x268826c0
mov ecx, dword [esp + 0x20]
sub eax, dword [edi + ecx]
sub eax, 0x67d7f60
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x14]
imul dword [esp + 0x10]
shl edx, 1
mov dword [esp + 0x14], edx
mov ecx, dword [esp + 0x14]
mov eax, ecx
sar eax, 3
mov dword [esp + 0x10], eax
mov dword [esp + 0x14], 0x6de35400
mov eax, dword [esp + 0x14]
imul dword [esp + 0x10]
shl edx, 1
mov dword [esp + 0x14], edx
mov eax, dword [esp + 0x14]
xor edx, edx
add eax, ecx
sar eax, 0x16
mov dword [esp + 0x50], eax
mov eax, dword [esp + 0x44]
mov ebp, dword [eax + edi]
mov eax, dword [esp + 0x40]
mov eax, dword [eax + edi]
cmp eax, ebp
jge 0x10029e19
sub ebp, eax
lea esi, [ebx + 8]
dec ebp
lea esi, [esi + eax*4]
shr ebp, 2
mov ebx, edx
mov dword [esp + 0x14], esi
inc ebp
nop dword [eax + eax]
mov eax, dword [esi + 4]
cdq
mov edi, eax
mov eax, dword [esi]
xor edi, edx
sub edi, edx
cdq
mov ecx, eax
mov eax, dword [esi - 4]
xor ecx, edx
sub ecx, edx
cdq
mov esi, eax
mov eax, dword [esp + 0x14]
xor esi, edx
sub esi, edx
mov eax, dword [eax - 8]
cdq
xor eax, edx
sub eax, edx
cmp ecx, edi
cmovg edi, ecx
cmp eax, esi
cmovg esi, eax
cmp esi, edi
cmovg edi, esi
mov esi, dword [esp + 0x14]
cmp ebx, edi
cmovg edi, ebx
add esi, 0x10
mov dword [esp + 0x14], esi
mov ebx, edi
sub ebp, 1
jne 0x10029dc0
mov dword [esp + 0x10], ebx
mov edx, edi
mov ebx, dword [esp + 0x38]
test edx, edx
jg 0x10029e27
mov esi, 0x80000000
jmp 0x10029f0b
bsr esi, edx
mov dword [esp + 0x30], 0
setne al
test al, al
je 0x10029e42
mov ecx, 0x1e
sub ecx, esi
jmp 0x10029e47
mov ecx, 0x1f
shl edx, cl
mov ebp, ecx
mov edi, 0x80000000
neg ebp
sub edi, edx
mov ecx, 0x1007ce40
mov dword [esp + 0x30], edi
xor esi, esi
mov dword [esp + 0x14], edi
movsx eax, word [ecx]
shl eax, 0x10
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x10]
imul dword [esp + 0x14]
mov dword [esp + 0x10], edx
add esi, dword [esp + 0x10]
mov dword [esp + 0x10], edi
mov eax, dword [esp + 0x10]
imul dword [esp + 0x30]
shl edx, 1
mov dword [esp + 0x10], edx
mov edi, dword [esp + 0x10]
add ecx, 2
mov dword [esp + 0x14], edi
cmp ecx, 0x1007ce54
jl 0x10029e63
mov dword [esp + 0x30], 0x71547653
mov dword [esp + 0x10], esi
mov eax, dword [esp + 0x10]
imul dword [esp + 0x30]
mov dword [esp + 0x10], edx
add esi, dword [esp + 0x10]
test ebp, ebp
je 0x10029ef7
mov eax, ebp
jns 0x10029ec8
not eax
bsr ecx, eax
mov dword [esp + 0x30], 0
setne al
test al, al
lea eax, [ecx - 0x1f]
jne 0x10029ee2
mov eax, 0xffffffe0
add eax, 0x21
lea ecx, [eax - 1]
sar esi, cl
mov ecx, 0x1f
sub ecx, eax
shl ebp, cl
add esi, ebp
jmp 0x10029efc
mov eax, 1
lea ecx, [eax - 6]
test ecx, ecx
jle 0x10029f07
shl esi, cl
jmp 0x10029f0b
neg ecx
sar esi, cl
mov eax, 0x80000000
sub eax, esi
cmp eax, 0xdd556200
jge 0x10029f25
add esi, 0xdd556200
sar esi, 0x17
inc esi
jmp 0x10029f2a
mov esi, 0xffffff01
cmp dword [esp + 0x50], esi
mov edx, esi
mov edi, dword [esp + 0x2c]
cmovg edx, dword [esp + 0x50]
cmp dword [esp + 0xd20], 0
mov dword [esp + edi + 0x144], esi
jle 0x10029f9a
mov eax, dword [esp + 0x40]
push dword [esp + 0xd28]
mov ecx, dword [eax + edi]
lea eax, [esp + 0x418]
add eax, edi
push eax
lea eax, [esp + 0x5c]
add eax, edi
push eax
mov eax, dword [esp + 0x50]
push esi
push edx
push dword [esp + 0x50]
mov eax, dword [eax + edi]
sub eax, ecx
push eax
lea eax, [esp + 0x520]
lea eax, [eax + ecx*2]
push eax
mov eax, dword [esp + 0x54]
lea eax, [eax + ecx*2]
push eax
lea eax, [ebx + ecx*4]
push eax
call fcn.1002c3b0
add esp, 0x28
mov edx, eax
mov eax, dword [esp + 0x1c]
mov esi, dword [esp + 0x28]
mov dword [edi + eax], edx
mov edx, dword [esp + 0x48]
mov eax, dword [esp + 0x24]
inc edx
add edi, 4
mov dword [esp + 0x48], edx
add eax, 4
mov dword [esp + 0x2c], edi
mov dword [esp + 0x24], eax
cmp edx, dword [esi + 8]
jl 0x10029d20
mov ecx, dword [esp + 0x18]
add ecx, dword [esi + 4]
mov edx, dword [esi]
mov dword [esp + 0x18], ecx
cmp ecx, edx
jl 0x10029ce0
cmp dword [esp + 0xd20], 0
mov ebp, edx
jle 0x1002a0fd
test edx, edx
jle 0x1002a002
mov ecx, edx
lea edi, [esp + 0x324]
mov eax, 0x80000000
rep stosd dword es:[edi], eax
lea eax, [esp + 0x234]
push eax
push dword [esi + 8]
lea eax, [esi + 0x18]
push dword [esi + 4]
push ebp
mov ebp, dword [esp + 0x30]
push eax
lea eax, [ebx + 0x1ec0]
push eax
lea eax, [ebx + 0x20a0]
push eax
push ebp
call fcn.1002bd10
mov edi, dword [esp + 0x3c]
lea eax, [esp + 0x434]
push 1
push eax
lea eax, [esp + 0x25c]
push eax
push ebp
mov ebp, dword [esp + 0x64]
lea eax, [esp + 0x354]
push eax
lea eax, [esp + 0x88]
push eax
lea eax, [esp + 0x17c]
push eax
push edi
push dword [esp + 0xd68]
lea eax, [esp + 0x548]
push eax
push ebp
push ebx
push esi
call fcn.1002b800
add esp, 0x54
cmp dword [esp + 0xd20], 1
jle 0x1002a0fd
lea eax, [esp + 0x234]
push eax
push dword [esp + 0x24]
lea eax, [esp + 0x32c]
push eax
lea eax, [esp + 0x60]
push eax
lea eax, [esp + 0x154]
push eax
push edi
push dword [esp + 0xd40]
lea eax, [esp + 0x520]
push eax
push ebp
push ebx
push esi
call fcn.1002b180
lea eax, [esp + 0x260]
push eax
push dword [esp + 0x50]
lea eax, [esp + 0x358]
push eax
lea eax, [esp + 0x8c]
push eax
lea eax, [esp + 0x180]
push eax
push edi
push dword [esp + 0xd6c]
lea eax, [esp + 0x54c]
push eax
push ebp
push ebx
push esi
call fcn.1002a3f0
add esp, 0x58
xor ebp, ebp
mov ecx, 0x7fffffff
mov dword [esp + 0x2c], ecx
cmp dword [esi], ebp
jle 0x1002a164
mov eax, dword [esi + 4]
mov edi, dword [esi + 8]
shl eax, 2
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x1c]
mov edx, dword [esp + 0x18]
mov dword [esp + 0x24], eax
test edi, edi
jle 0x1002a157
mov edx, eax
nop dword [eax + eax]
mov eax, dword [edx]
cmp eax, 0x80000000
je 0x1002a140
cmp ecx, eax
cmovl eax, ecx
mov ecx, eax
add edx, 4
sub edi, 1
jne 0x1002a130
mov eax, dword [esp + 0x24]
mov edi, dword [esi + 8]
mov edx, dword [esp + 0x18]
mov dword [esp + 0x2c], ecx
add ebp, dword [esi + 4]
add eax, edx
mov dword [esp + 0x24], eax
cmp ebp, dword [esi]
jl 0x1002a125
mov edx, dword [esi]
xor eax, eax
mov dword [esp + 0x24], eax
test edx, edx
jle 0x1002a1fd
xor edx, edx
mov dword [esp + 0x18], edx
cmp dword [esi + 8], edx
jle 0x1002a1ec
mov edi, dword [esp + 0x1c]
lea ebp, [eax + 7]
lea ebp, [esi + ebp*4]
lea edi, [edi + eax*4]
nop dword [eax]
cmp dword [edi], 0x80000000
je 0x1002a1d8
lea eax, [ecx + 0x3c]
cmp eax, dword [edi]
jge 0x1002a1d8
cmp dword [esp + 0xd20], 0
mov dword [edi], eax
jle 0x1002a1d8
push dword [esp + 0xd28]
mov ecx, dword [ebp - 4]
push eax
mov eax, dword [ebp]
sub eax, ecx
push eax
mov eax, dword [esp + 0x40]
lea eax, [eax + ecx*2]
push eax
lea eax, [ebx + ecx*4]
push eax
call fcn.100233d0
mov ecx, dword [esp + 0x40]
add esp, 0x14
mov edx, dword [esp + 0x18]
inc edx
add edi, 4
add ebp, 4
mov dword [esp + 0x18], edx
cmp edx, dword [esi + 8]
jl 0x1002a190
mov eax, dword [esp + 0x24]
add eax, dword [esi + 4]
mov edx, dword [esi]
mov dword [esp + 0x24], eax
cmp eax, edx
jl 0x1002a174
mov edi, 0x80000000
test edx, edx
jle 0x1002a378
mov eax, dword [esi + 4]
mov ebp, dword [esi + 8]
mov dword [esp + 0x28], eax
shl eax, 2
xor ebx, ebx
mov dword [esp + 0x3c], eax
mov eax, dword [esp + 0x1c]
mov dword [esp + 0x20], eax
xor ecx, ecx
test ebp, ebp
jle 0x1002a2ce
cmp ebp, 8
jb 0x1002a2a4
cmp dword [0x100a1f0c], 2
jl 0x1002a2a4
mov eax, ebp
and eax, 0x80000007
jns 0x1002a24b
dec eax
or eax, 0xfffffff8
inc eax
movd xmm0, edi
mov edx, ebp
pshufd xmm1, xmm0, 0
sub edx, eax
mov eax, dword [esp + 0x20]
movaps xmm2, xmm1
nop
movups xmm0, xmmword [eax]
add ecx, 8
lea eax, [eax + 0x20]
pmaxsd xmm1, xmm0
movups xmm0, xmmword [eax - 0x10]
pmaxsd xmm2, xmm0
cmp ecx, edx
jl 0x1002a260
mov edx, dword [esi]
mov eax, dword [esp + 0x20]
pmaxsd xmm1, xmm2
movaps xmm0, xmm1
psrldq xmm0, 8
pmaxsd xmm1, xmm0
movups xmm0, xmm1
psrldq xmm0, 4
pmaxsd xmm1, xmm0
movd edi, xmm1
cmp ecx, ebp
jge 0x1002a2ce
mov edx, dword [esp + 0x1c]
lea eax, [ecx + ebx]
sub ebp, ecx
lea edx, [edx + eax*4]
mov eax, dword [edx]
lea edx, [edx + 4]
cmp edi, eax
cmovg eax, edi
mov edi, eax
sub ebp, 1
jne 0x1002a2b4
mov ebp, dword [esi + 8]
mov edx, dword [esi]
mov eax, dword [esp + 0x20]
add ebx, dword [esp + 0x28]
add eax, dword [esp + 0x3c]
mov dword [esp + 0x20], eax
cmp ebx, edx
jl 0x1002a225
mov ebx, dword [esp + 0x38]
cmp edi, 0x80000000
jle 0x1002a378
mov eax, dword [esp + 0x4c]
mov dword [eax], edi
xor eax, eax
mov dword [esp + 0x18], eax
cmp dword [esi], eax
jle 0x1002a3cf
xor ebp, ebp
cmp dword [esi + 8], ebp
jle 0x1002a36b
mov ecx, dword [esp + 0x1c]
lea edx, [ecx + eax*4]
add eax, 7
lea ecx, [esi + eax*4]
mov eax, 0xffffffe4
sub eax, esi
mov dword [esp + 0x28], eax
cmp dword [edx], 0x80000000
jne 0x1002a351
add eax, dword [esp + 0x1c]
mov ebx, dword [esp + 0x38]
mov dword [eax + ecx], 0
mov eax, dword [ecx - 4]
cmp eax, dword [ecx]
jge 0x1002a357
mov dword [ebx + eax*4], 0
inc eax
cmp eax, dword [ecx]
jl 0x1002a343
jmp 0x1002a357
mov eax, edi
sub eax, dword [edx]
mov dword [edx], eax
mov eax, dword [esp + 0x28]
inc ebp
add ecx, 4
add edx, 4
cmp ebp, dword [esi + 8]
jl 0x1002a325
mov eax, dword [esp + 0x18]
add eax, dword [esi + 4]
mov dword [esp + 0x18], eax
cmp eax, dword [esi]
jl 0x1002a306
jmp 0x1002a3cf
mov eax, dword [esp + 0x4c]
xor ebp, ebp
mov dword [eax], 0
cmp dword [esi], ebp
jle 0x1002a3cf
xor edx, edx
cmp dword [esi + 8], edx
jle 0x1002a3c8
mov eax, dword [esp + 0x1c]
lea ecx, [ebp + 7]
lea ecx, [esi + ecx*4]
lea edi, [eax + ebp*4]
nop dword [eax]
mov dword [edi], 0
mov eax, dword [ecx - 4]
cmp eax, dword [ecx]
jge 0x1002a3bc
nop dword [eax]
mov dword [ebx + eax*4], 0
inc eax
cmp eax, dword [ecx]
jl 0x1002a3b0
inc edx
add edi, 4
add ecx, 4
cmp edx, dword [esi + 8]
jl 0x1002a3a0
add ebp, dword [esi + 4]
cmp ebp, dword [esi]
jl 0x1002a388
mov ecx, dword [esp + 0xd04]
pop edi
pop esi
pop ebp
pop ebx
xor ecx, esp
call fcn.1003b025
add esp, 0xcf8
ret