Function at 0x100468d0
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x248
mov eax, dword [0x101165b0]
xor eax, ebp
mov dword [ebp - 4], eax
mov ecx, dword [ebp + 0xc]
mov eax, dword [ebp + 8]
mov edx, dword [ebp + 0x14]
push ebx
mov ebx, dword [ebp + 0x18]
push esi
mov esi, dword [ebp + 0x1c]
mov dword [ebp - 0x240], ecx
mov ecx, dword [ebp + 0x10]
mov dword [ebp - 0x244], eax
mov dword [ebp - 0x224], ecx
mov dword [ebp - 0x210], edx
mov dword [ebp - 0x22c], esi
test ebx, ebx
je 0x10046948
lea eax, [esi + ebx*4 - 4]
lea ecx, [ecx]
cmp dword [eax], 0
jne 0x1004693e
sub eax, 4
dec ebx
jne 0x10046920
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 dword [ebp - 0x214], ebx
test ebx, ebx
jne 0x1004695b
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 eax, dword [ecx]
sub eax, ebx
inc eax
mov dword [ebp - 0x248], eax
mov eax, dword [esi + ebx*4 - 4]
push edi
xor edi, edi
mov dword [ebp - 0x238], edi
cmp eax, 0x7fffffff
ja 0x10046a45
mov edi, edi
add eax, eax
inc edi
cmp eax, 0x7fffffff
jbe 0x10046980
mov dword [ebp - 0x238], edi
test edi, edi
je 0x10046a45
mov eax, ebx
test ebx, ebx
je 0x100469d4
mov ecx, 0x20
sub ecx, edi
mov dword [ebp - 0x21c], ecx
jmp 0x100469b6
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 0x100469b0
mov ebx, dword [ebp - 0x214]
mov eax, dword [ebp - 0x224]
mov eax, dword [eax]
mov ecx, dword [ebp - 0x210]
mov dword [ecx + eax*4], 0
test eax, eax
je 0x10046a2e
mov ebx, dword [ebp - 0x210]
mov ecx, 0x20
sub ecx, edi
mov dword [ebp - 0x21c], ecx
jmp 0x10046a08
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 0x10046a02
mov ebx, dword [ebp - 0x214]
mov ecx, dword [ebp - 0x224]
mov eax, dword [ecx]
mov edx, dword [ebp - 0x210]
cmp dword [edx + eax*4], 0
je 0x10046a45
inc eax
mov dword [ecx], eax
mov eax, dword [ebp - 0x248]
add eax, eax
add eax, eax
push eax
mov eax, dword [ebp - 0x240]
push 0
push eax
call fcn.10086410
mov ecx, dword [ebp - 0x224]
mov ecx, dword [ecx]
add esp, 0xc
mov eax, ebx
test ebx, ebx
je 0x10046a91
mov edx, dword [ebp - 0x210]
lea edi, [edx + ecx*4]
mov ecx, dword [edi - 4]
mov edx, dword [esi + eax*4 - 4]
dec eax
sub edi, 4
cmp ecx, edx
jb 0x10046b68
ja 0x10046a91
test eax, eax
jne 0x10046a78
mov ecx, dword [ebp - 0x248]
mov eax, dword [ebp - 0x240]
inc dword [eax + ecx*4 - 4]
xor edi, edi
xor edx, edx
xor eax, eax
dec ecx
mov dword [ebp - 0x230], edi
mov dword [ebp - 0x220], edx
test ebx, ebx
je 0x10046b22
jmp 0x10046ac6
mov esi, dword [ebp - 0x22c]
mov edx, dword [esi + edx*4]
mov esi, dword [ebp - 0x210]
mov esi, dword [esi + ecx*4]
xor edi, edi
xor ebx, ebx
sub esi, edx
sbb ebx, edi
sub esi, eax
sbb ebx, dword [ebp - 0x230]
mov eax, dword [ebp - 0x210]
mov dword [ebp - 0x230], ebx
mov dword [eax + ecx*4], esi
jne 0x10046af8
cmp esi, 0xffffffff
jbe 0x10046aff
mov eax, 1
jmp 0x10046b01
xor eax, eax
mov ebx, dword [ebp - 0x214]
cdq
mov edi, edx
mov edx, dword [ebp - 0x220]
inc edx
inc ecx
mov dword [ebp - 0x230], edi
mov dword [ebp - 0x220], edx
cmp edx, ebx
jb 0x10046ac0
mov edx, dword [ebp - 0x224]
cmp ecx, dword [edx]
jae 0x10046b68
mov esi, dword [ebp - 0x210]
mov edx, dword [esi + ecx*4]
xor esi, esi
sub edx, eax
sbb esi, edi
mov dword [ebp - 0x230], esi
mov esi, dword [ebp - 0x210]
mov dword [esi + ecx*4], edx
jne 0x10046b51
cmp edx, 0xffffffff
jbe 0x10046b58
mov eax, 1
jmp 0x10046b5a
xor eax, eax
cdq
mov edi, edx
mov edx, dword [ebp - 0x224]
inc ecx
cmp ecx, dword [edx]
jb 0x10046b32
mov eax, dword [ebp - 0x224]
mov eax, dword [eax]
dec eax
mov dword [ebp - 0x21c], eax
cmp eax, ebx
jb 0x10046eb7
nop
mov ecx, dword [ebp - 0x214]
mov edx, dword [ebp - 0x22c]
mov eax, dword [edx + ecx*4 - 4]
mov ecx, dword [ebp - 0x210]
mov esi, dword [ebp - 0x21c]
mov ebx, dword [ecx + esi*4]
mov dword [ebp - 0x228], eax
mov dword [ebp - 0x220], ebx
cmp ebx, eax
jne 0x10046bb4
or edi, 0xffffffff
jmp 0x10046bd1
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 - 0x220]
mov edi, eax
mov edx, dword [ebp - 0x210]
mov eax, dword [edx + esi*4 - 4]
mov dword [ebp - 0x23c], eax
cmp dword [ebp - 0x214], 1
jne 0x10046c00
mov ecx, dword [ebp - 0x22c]
mov eax, dword [ecx]
mov dword [ebp - 0x218], 0
mul edi
jmp 0x10046c44
mov edx, dword [ebp - 0x22c]
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 - 0x228]
push esi
push edx
mov dword [ebp - 0x218], eax
call fcn.10087490
mov esi, dword [ebp - 0x21c]
xor ecx, ecx
add eax, ebx
mov ebx, dword [ebp - 0x220]
adc edx, ecx
cmp esi, 1
jne 0x10046c4d
xor ecx, ecx
jmp 0x10046c57
mov ecx, dword [ebp - 0x210]
mov ecx, dword [ecx + esi*4 - 8]
cmp edx, ebx
jbe 0x10046c5e
dec edi
jmp 0x10046be1
jne 0x10046c80
mov edx, dword [ebp - 0x23c]
cmp eax, edx
jbe 0x10046c70
dec edi
jmp 0x10046be1
jne 0x10046c80
cmp dword [ebp - 0x218], ecx
jbe 0x10046c80
dec edi
jmp 0x10046be1
mov dword [ebp - 0x218], edi
xor ebx, ebx
xor edi, edi
xor esi, esi
cmp dword [ebp - 0x214], ebx
jbe 0x10046cf8
mov eax, dword [ebp - 0x22c]
lea edx, [ebp - 0x20c]
sub eax, edx
mov dword [ebp - 0x23c], eax
jmp 0x10046cb0
mov eax, dword [ebp - 0x23c]
lea ecx, [eax + esi*4]
mov edx, dword [ebp + ecx - 0x20c]
xor eax, eax
push eax
mov eax, dword [ebp - 0x218]
push eax
push 0
push edx
call fcn.10087490
add edi, eax
adc ebx, edx
mov dword [ebp + esi*4 - 0x20c], edi
mov edi, ebx
inc esi
xor ebx, ebx
cmp esi, dword [ebp - 0x214]
jb 0x10046cb0
mov ecx, edi
or ecx, ebx
je 0x10046cf8
mov dword [ebp + esi*4 - 0x20c], edi
inc esi
mov ecx, dword [ebp - 0x21c]
sub ecx, dword [ebp - 0x214]
xor edi, edi
xor eax, eax
mov dword [ebp - 0x23c], esi
mov dword [ebp - 0x230], edi
mov dword [ebp - 0x228], ecx
mov dword [ebp - 0x220], edi
cmp esi, edi
jbe 0x10046e89
mov ebx, dword [ebp - 0x210]
mov edi, edi
mov edx, dword [ebx + ecx*4]
mov esi, dword [ebp + edi*4 - 0x20c]
xor ebx, ebx
xor edi, edi
sub edx, esi
sbb ebx, edi
sub edx, eax
sbb ebx, dword [ebp - 0x230]
mov dword [ebp - 0x230], ebx
mov ebx, dword [ebp - 0x210]
mov dword [ebx + ecx*4], edx
jne 0x10046d60
cmp edx, 0xffffffff
jbe 0x10046d67
mov eax, 1
jmp 0x10046d69
xor eax, eax
mov edi, dword [ebp - 0x220]
inc edi
cdq
inc ecx
mov dword [ebp - 0x230], edx
mov dword [ebp - 0x220], edi
cmp edi, dword [ebp - 0x23c]
jb 0x10046d30
mov esi, eax
or esi, edx
je 0x10046e89
mov edi, dword [ebp - 0x224]
cmp ecx, dword [edi]
jae 0x10046dc9
mov esi, dword [ebx + ecx*4]
xor edi, edi
sub esi, eax
sbb edi, edx
mov dword [ebp - 0x230], edi
mov dword [ebx + ecx*4], esi
jne 0x10046db3
cmp esi, 0xffffffff
jbe 0x10046dba
mov eax, 1
jmp 0x10046dbc
xor eax, eax
cdq
mov esi, eax
inc ecx
or esi, edx
jne 0x10046d90
jmp 0x10046e89
or eax, edx
je 0x10046e89
mov ecx, dword [ebp - 0x228]
xor eax, eax
xor edx, edx
xor esi, esi
mov dword [ebp - 0x230], edx
mov dword [ebp - 0x220], esi
cmp dword [ebp - 0x214], eax
jbe 0x10046e60
mov edi, ebx
jmp 0x10046e00
mov edx, dword [ebp - 0x22c]
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 - 0x230]
adc edx, esi
mov dword [edi + ecx*4], eax
jne 0x10046e2e
cmp eax, 0xffffffff
jbe 0x10046e35
mov eax, 1
jmp 0x10046e37
xor eax, eax
mov esi, dword [ebp - 0x220]
inc esi
cdq
inc ecx
mov dword [ebp - 0x230], edx
mov dword [ebp - 0x220], esi
cmp esi, dword [ebp - 0x214]
jb 0x10046e00
mov edi, dword [ebp - 0x224]
mov ebx, dword [ebp - 0x210]
cmp ecx, dword [edi]
jae 0x10046e83
add eax, dword [ebx + ecx*4]
adc edx, 0
mov dword [ebx + ecx*4], eax
jne 0x10046e74
cmp eax, 0xffffffff
jbe 0x10046e7b
mov eax, 1
jmp 0x10046e7d
xor eax, eax
inc ecx
cdq
cmp ecx, dword [edi]
jb 0x10046e64
inc dword [ebp - 0x218]
mov eax, dword [ebp - 0x218]
mov ecx, dword [ebp - 0x240]
mov edx, dword [ebp - 0x228]
mov dword [ecx + edx*4], eax
mov eax, dword [ebp - 0x21c]
dec eax
mov dword [ebp - 0x21c], eax
cmp eax, dword [ebp - 0x214]
jae 0x10046b80
mov eax, dword [ebp - 0x248]
test eax, eax
je 0x10046edb
mov ecx, dword [ebp - 0x240]
lea ecx, [ecx + eax*4 - 4]
jmp 0x10046ed0
cmp dword [ecx], 0
jne 0x10046edb
sub ecx, 4
dec eax
jne 0x10046ed0
mov edx, dword [ebp - 0x244]
mov edi, dword [ebp - 0x238]
mov ecx, dword [ebp - 0x214]
mov dword [edx], eax
mov eax, dword [ebp - 0x224]
mov dword [eax], ecx
test edi, edi
je 0x10046f77
xor eax, eax
dec ecx
je 0x10046f63
mov eax, dword [ebp - 0x210]
mov edx, dword [ebp - 0x22c]
mov esi, 0x20
sub esi, edi
sub edx, eax
mov dword [ebp - 0x228], ecx
mov dword [ebp - 0x21c], ecx
mov ebx, dword [edx + eax + 4]
mov ecx, esi
shl ebx, cl
mov ecx, edi
mov edi, dword [edx + eax]
shr edi, cl
mov ecx, esi
add eax, 4
xor ebx, edi
mov dword [edx + eax - 4], ebx
mov edi, dword [eax]
mov ebx, dword [eax - 4]
shl edi, cl
mov ecx, dword [ebp - 0x238]
shr ebx, cl
xor edi, ebx
dec dword [ebp - 0x228]
mov dword [eax - 4], edi
mov edi, ecx
jne 0x10046f25
mov eax, dword [ebp - 0x21c]
mov edx, dword [ebp - 0x22c]
mov ecx, edi
shr dword [edx + eax*4], cl
mov edx, dword [ebp - 0x210]
shr dword [edx + eax*4], cl
mov ecx, dword [ebp - 4]
pop edi
pop esi
xor ecx, ebp
xor eax, eax
pop ebx
call fcn.1008600b
mov esp, ebp
pop ebp
ret