Function at 0x10046050
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x23c
mov eax, dword [0x101165b0]
xor eax, ebp
mov dword [ebp - 4], eax
mov eax, dword [ebp + 0x10]
mov edx, dword [ebp + 0xc]
push ebx
mov ebx, dword [ebp + 8]
push esi
mov esi, dword [ebp + 0x14]
mov dword [ebp - 0x224], ebx
mov dword [ebp - 0x210], edx
mov dword [ebp - 0x214], eax
mov dword [ebp - 0x220], esi
test eax, eax
je 0x100460a2
lea ecx, [esi + eax*4 - 4]
cmp dword [ecx], 0
jne 0x1004609c
sub ecx, 4
dec eax
jne 0x10046091
mov dword [ebp - 0x214], eax
cmp dword [ebx], 0
je 0x100460b7
mov ecx, dword [ebx]
cmp dword [edx + ecx*4 - 4], 0
jne 0x100460b7
dec ecx
mov dword [ebx], ecx
test ecx, ecx
jne 0x100460a7
test eax, eax
jne 0x100460ce
pop esi
or eax, 0xffffffff
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.1008600b
mov esp, ebp
pop ebp
ret
mov ecx, dword [ebx]
sub ecx, eax
mov eax, dword [esi + eax*4 - 4]
push edi
inc ecx
xor edi, edi
mov dword [ebp - 0x218], ecx
mov dword [ebp - 0x238], edi
cmp eax, 0x7fffffff
ja 0x100461ad
add eax, eax
inc edi
cmp eax, 0x7fffffff
jbe 0x100460f1
mov dword [ebp - 0x238], edi
test edi, edi
je 0x100461ad
mov eax, dword [ebp - 0x214]
test eax, eax
je 0x10046146
mov ecx, 0x20
sub ecx, edi
mov dword [ebp - 0x21c], ecx
jmp 0x10046128
mov ecx, dword [ebp - 0x21c]
mov edx, dword [esi + eax*4 - 4]
dec eax
mov ebx, edx
shr ebx, cl
mov ecx, edi
shl edx, cl
xor dword [esi + eax*4 + 4], ebx
mov dword [esi + eax*4], edx
test eax, eax
jne 0x10046122
mov ebx, dword [ebp - 0x224]
mov eax, dword [ebx]
mov ecx, dword [ebp - 0x210]
mov dword [ecx + eax*4], 0
test eax, eax
je 0x1004619c
mov ebx, dword [ebp - 0x210]
mov ecx, 0x20
sub ecx, edi
mov dword [ebp - 0x21c], ecx
jmp 0x10046176
mov ecx, dword [ebp - 0x21c]
mov edx, dword [ebx + eax*4 - 4]
dec eax
mov ebx, edx
shr ebx, cl
mov ecx, ebx
mov ebx, dword [ebp - 0x210]
xor dword [ebx + eax*4 + 4], ecx
mov ecx, edi
shl edx, cl
mov dword [ebx + eax*4], edx
test eax, eax
jne 0x10046170
mov ebx, dword [ebp - 0x224]
mov eax, dword [ebx]
mov edx, dword [ebp - 0x210]
cmp dword [edx + eax*4], 0
je 0x100461ad
inc eax
mov dword [ebx], eax
mov eax, dword [ebp - 0x214]
mov ecx, dword [ebx]
test eax, eax
je 0x100461db
mov edx, dword [ebp - 0x210]
lea ecx, [edx + ecx*4]
mov edx, dword [ecx - 4]
mov edi, dword [esi + eax*4 - 4]
dec eax
sub ecx, 4
cmp edx, edi
jb 0x1004629e
ja 0x100461db
test eax, eax
jne 0x100461c2
mov ecx, dword [ebp - 0x218]
xor eax, eax
xor edx, edx
xor edi, edi
dec ecx
mov dword [ebp - 0x228], edx
mov dword [ebp - 0x218], edi
cmp dword [ebp - 0x214], eax
jbe 0x10046262
mov ebx, dword [ebp - 0x210]
jmp 0x1004620a
mov esi, dword [ebp - 0x220]
mov edx, dword [esi + edi*4]
mov esi, dword [ebx + ecx*4]
xor ebx, ebx
xor edi, edi
sub esi, edx
sbb ebx, edi
sub esi, eax
sbb ebx, dword [ebp - 0x228]
mov dword [ebp - 0x228], ebx
mov ebx, dword [ebp - 0x210]
mov dword [ebx + ecx*4], esi
jne 0x10046236
cmp esi, 0xffffffff
jbe 0x1004623d
mov eax, 1
jmp 0x1004623f
xor eax, eax
mov edi, dword [ebp - 0x218]
inc edi
cdq
inc ecx
mov dword [ebp - 0x228], edx
mov dword [ebp - 0x218], edi
cmp edi, dword [ebp - 0x214]
jb 0x10046204
mov ebx, dword [ebp - 0x224]
cmp ecx, dword [ebx]
jae 0x1004629e
mov edi, dword [ebp - 0x210]
lea esp, [esp]
mov esi, dword [edi + ecx*4]
xor edi, edi
sub esi, eax
sbb edi, edx
mov dword [ebp - 0x228], edi
mov edi, dword [ebp - 0x210]
mov dword [edi + ecx*4], esi
jne 0x1004628f
cmp esi, 0xffffffff
jbe 0x10046296
mov eax, 1
jmp 0x10046298
xor eax, eax
inc ecx
cdq
cmp ecx, dword [ebx]
jb 0x10046270
cmp dword [ebx], 0
je 0x100462c0
mov ecx, dword [ebp - 0x210]
lea esp, [esp]
mov eax, dword [ebx]
cmp dword [ecx + eax*4 - 4], 0
jne 0x100462c0
dec eax
mov dword [ebx], eax
test eax, eax
jne 0x100462b0
mov ebx, dword [ebx]
dec ebx
mov dword [ebp - 0x21c], ebx
inc ebx
cmp ebx, dword [ebp - 0x214]
jbe 0x1004662d
jmp 0x100462e0
mov ecx, dword [ebp - 0x214]
mov eax, dword [ebp - 0x220]
mov eax, dword [eax + ecx*4 - 4]
mov ecx, dword [ebp - 0x210]
mov esi, dword [ebp - 0x21c]
mov ebx, dword [ecx + esi*4]
mov dword [ebp - 0x23c], eax
mov dword [ebp - 0x218], ebx
cmp ebx, eax
jne 0x10046314
or edi, 0xffffffff
jmp 0x10046331
mov ecx, dword [ecx + esi*4 - 4]
xor edi, edi
xor edx, edx
push edi
add edx, ecx
push eax
adc ebx, edi
push ebx
push edx
call fcn.100873a0
mov ebx, dword [ebp - 0x218]
mov edi, eax
mov edx, dword [ebp - 0x210]
mov eax, dword [edx + esi*4 - 4]
mov dword [ebp - 0x234], eax
cmp dword [ebp - 0x214], 1
jne 0x10046360
mov ecx, dword [ebp - 0x220]
mov eax, dword [ecx]
mov dword [ebp - 0x230], 0
mul edi
jmp 0x100463a4
mov edx, dword [ebp - 0x220]
mov eax, dword [ebp - 0x214]
mov ecx, dword [edx + eax*4 - 8]
xor esi, esi
push esi
push edi
push esi
push ecx
call fcn.10087490
push esi
push edi
mov ebx, edx
mov edx, dword [ebp - 0x23c]
push esi
push edx
mov dword [ebp - 0x230], eax
call fcn.10087490
mov esi, dword [ebp - 0x21c]
xor ecx, ecx
add eax, ebx
mov ebx, dword [ebp - 0x218]
adc edx, ecx
cmp esi, 1
jne 0x100463ad
xor ecx, ecx
jmp 0x100463b7
mov ecx, dword [ebp - 0x210]
mov ecx, dword [ecx + esi*4 - 8]
cmp edx, ebx
jbe 0x100463be
dec edi
jmp 0x10046341
jne 0x100463e0
mov edx, dword [ebp - 0x234]
cmp eax, edx
jbe 0x100463d0
dec edi
jmp 0x10046341
jne 0x100463e0
cmp dword [ebp - 0x230], ecx
jbe 0x100463e0
dec edi
jmp 0x10046341
xor esi, esi
xor ebx, ebx
mov dword [ebp - 0x228], esi
cmp dword [ebp - 0x214], esi
jbe 0x10046461
mov eax, dword [ebp - 0x220]
lea edx, [ebp - 0x20c]
sub eax, edx
mov dword [ebp - 0x234], eax
jmp 0x10046410
mov eax, dword [ebp - 0x234]
lea ecx, [eax + esi*4]
mov edx, dword [ebp + ecx - 0x20c]
xor eax, eax
push eax
push edi
push eax
push edx
call fcn.10087490
add ebx, eax
mov eax, dword [ebp - 0x228]
adc eax, edx
mov dword [ebp + esi*4 - 0x20c], ebx
inc esi
mov ebx, eax
mov dword [ebp - 0x228], 0
cmp esi, dword [ebp - 0x214]
jb 0x10046410
or eax, dword [ebp - 0x228]
je 0x10046461
mov dword [ebp + esi*4 - 0x20c], ebx
inc esi
mov edi, dword [ebp - 0x21c]
sub edi, dword [ebp - 0x214]
xor ecx, ecx
xor eax, eax
mov dword [ebp - 0x234], esi
mov dword [ebp - 0x228], ecx
mov dword [ebp - 0x23c], edi
mov dword [ebp - 0x218], ecx
cmp esi, ecx
jbe 0x100465f2
jmp 0x100464a0
mov edx, dword [ebp + ecx*4 - 0x20c]
mov ecx, dword [ebp - 0x210]
mov ecx, dword [ecx + edi*4]
xor esi, esi
xor ebx, ebx
sub ecx, edx
mov edx, dword [ebp - 0x210]
sbb ebx, esi
sub ecx, eax
sbb ebx, dword [ebp - 0x228]
mov dword [edx + edi*4], ecx
mov dword [ebp - 0x228], ebx
jne 0x100464d6
cmp ecx, 0xffffffff
jbe 0x100464dd
mov eax, 1
jmp 0x100464df
xor eax, eax
mov ecx, dword [ebp - 0x218]
inc ecx
cdq
inc edi
mov dword [ebp - 0x228], edx
mov dword [ebp - 0x218], ecx
cmp ecx, dword [ebp - 0x234]
jb 0x100464a0
mov ecx, eax
or ecx, edx
je 0x100465f2
mov ebx, dword [ebp - 0x210]
lea esp, [esp]
mov ecx, dword [ebp - 0x224]
cmp edi, dword [ecx]
jae 0x10046549
mov ecx, dword [ebx + edi*4]
xor esi, esi
sub ecx, eax
sbb esi, edx
mov dword [ebp - 0x228], esi
mov dword [ebx + edi*4], ecx
jne 0x10046533
cmp ecx, 0xffffffff
jbe 0x1004653a
mov eax, 1
jmp 0x1004653c
xor eax, eax
cdq
mov ecx, eax
inc edi
or ecx, edx
jne 0x10046510
jmp 0x100465f2
or eax, edx
je 0x100465f2
mov ecx, dword [ebp - 0x23c]
xor eax, eax
xor edx, edx
xor esi, esi
mov dword [ebp - 0x228], edx
mov dword [ebp - 0x218], esi
cmp dword [ebp - 0x214], eax
jbe 0x100465c9
mov edi, ebx
mov edx, dword [ebp - 0x220]
mov edx, dword [edx + esi*4]
mov edi, dword [edi + ecx*4]
xor esi, esi
xor ebx, ebx
add edx, edi
mov edi, dword [ebp - 0x210]
adc esi, ebx
add eax, edx
mov edx, dword [ebp - 0x228]
adc edx, esi
mov dword [edi + ecx*4], eax
jne 0x100465a1
cmp eax, 0xffffffff
jbe 0x100465a8
mov eax, 1
jmp 0x100465aa
xor eax, eax
mov esi, dword [ebp - 0x218]
inc esi
cdq
inc ecx
mov dword [ebp - 0x228], edx
mov dword [ebp - 0x218], esi
cmp esi, dword [ebp - 0x214]
jb 0x10046573
mov ebx, edi
mov esi, dword [ebp - 0x224]
cmp ecx, dword [esi]
jae 0x100465f2
add eax, dword [ebx + ecx*4]
adc edx, 0
mov dword [ebx + ecx*4], eax
jne 0x100465e3
cmp eax, 0xffffffff
jbe 0x100465ea
mov eax, 1
jmp 0x100465ec
xor eax, eax
inc ecx
cdq
cmp ecx, dword [esi]
jb 0x100465d3
mov ecx, dword [ebp - 0x224]
cmp dword [ecx], 0
je 0x10046613
mov edx, dword [ebp - 0x210]
mov eax, dword [ecx]
cmp dword [edx + eax*4 - 4], 0
jne 0x10046613
dec eax
mov dword [ecx], eax
test eax, eax
jne 0x10046603
mov eax, dword [ebp - 0x21c]
dec eax
mov dword [ebp - 0x21c], eax
inc eax
cmp eax, dword [ebp - 0x214]
ja 0x100462e0
mov ebx, dword [ebp - 0x238]
mov eax, dword [ebp - 0x214]
mov edx, dword [ebp - 0x224]
mov dword [edx], eax
test ebx, ebx
je 0x100466e7
xor edi, edi
mov dword [ebp - 0x21c], edi
cmp eax, 1
jbe 0x100466d1
mov eax, dword [ebp - 0x210]
mov edx, dword [ebp - 0x220]
mov esi, 0x20
sub esi, ebx
mov dword [ebp - 0x230], 1
sub edx, eax
mov edi, dword [edx + eax + 4]
mov ecx, esi
shl edi, cl
mov ecx, ebx
mov ebx, dword [edx + eax]
shr ebx, cl
mov ecx, dword [ebp - 0x238]
add eax, 4
xor edi, ebx
mov dword [edx + eax - 4], edi
mov edi, dword [eax - 4]
mov ebx, dword [eax]
shr edi, cl
mov ecx, esi
shl ebx, cl
mov ecx, dword [ebp - 0x230]
inc ecx
mov dword [ebp - 0x230], ecx
xor edi, ebx
mov ebx, dword [ebp - 0x238]
mov dword [eax - 4], edi
mov edi, dword [ebp - 0x21c]
inc edi
mov dword [ebp - 0x21c], edi
cmp ecx, dword [ebp - 0x214]
jb 0x10046675
mov edx, dword [ebp - 0x224]
mov eax, dword [ebp - 0x220]
mov esi, dword [ebp - 0x210]
mov ecx, ebx
shr dword [eax + edi*4], cl
shr dword [esi + edi*4], cl
jmp 0x100466ed
mov esi, dword [ebp - 0x210]
cmp dword [edx], 0
pop edi
je 0x10046703
mov eax, dword [edx]
cmp dword [esi + eax*4 - 4], 0
jne 0x10046703
dec eax
mov dword [edx], eax
test eax, eax
jne 0x100466f3
mov ecx, dword [ebp - 4]
pop esi
xor ecx, ebp
xor eax, eax
pop ebx
call fcn.1008600b
mov esp, ebp
pop ebp
ret