Function at 0x10043110
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x448
mov eax, dword [0x101165b0]
xor eax, ebp
mov dword [ebp - 4], eax
mov edx, dword [ebp + 8]
mov eax, dword [ebp + 0x14]
mov ecx, dword [ebp + 0x1c]
push ebx
mov ebx, dword [ebp + 0x10]
push esi
mov esi, dword [ebp + 0x18]
push edi
mov edi, dword [ebp + 0xc]
mov dword [ebp - 0x448], edx
mov dword [ebp - 0x418], edi
mov dword [ebp - 0x438], eax
mov dword [ebp - 0x420], ecx
test ebx, ebx
je 0x10043163
lea ecx, [eax + ebx*4 - 4]
cmp dword [ecx], 0
jne 0x10043163
sub ecx, 4
dec ebx
jne 0x10043158
test esi, esi
je 0x1004317c
mov ecx, dword [ebp - 0x420]
lea ecx, [ecx + esi*4 - 4]
cmp dword [ecx], 0
jne 0x1004317c
sub ecx, 4
dec esi
jne 0x10043171
test ebx, ebx
jne 0x100431c2
test esi, esi
jne 0x10043197
pop edi
mov dword [edx], esi
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.1008600b
mov esp, ebp
pop ebp
ret
mov eax, dword [ebp - 0x420]
mov dword [edx], esi
lea edx, [esi*4]
push edx
push eax
push edi
call fcn.10086490
add esp, 0xc
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.1008600b
mov esp, ebp
pop ebp
ret
test esi, esi
jne 0x100431eb
lea ecx, [ebx*4]
push ecx
push eax
push edi
mov dword [edx], ebx
call fcn.10086490
add esp, 0xc
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.1008600b
mov esp, ebp
pop ebp
ret
xor ecx, ecx
mov dword [ebp - 0x440], ecx
cmp dword [eax], ecx
jne 0x1004321a
mov edi, dword [ebp - 0x420]
xor edx, edx
nop
cmp dword [edx + edi], 0
jne 0x10043214
inc ecx
lea edx, [ecx*4]
cmp dword [edx + eax], 0
je 0x10043200
mov dword [ebp - 0x440], ecx
lea edi, [ecx*4]
lea edx, [edi + eax]
mov dword [ebp - 0x444], edi
add edi, dword [ebp - 0x420]
mov dword [ebp - 0x43c], edx
mov edx, dword [edx]
mov eax, dword [edi]
mov dword [ebp - 0x430], edi
mov dword [ebp - 0x41c], eax
mov dword [ebp - 0x424], 0
mov edi, 1
test dl, 1
jne 0x10043274
lea ebx, [ebx]
test dword [ebp - 0x41c], edi
jne 0x10043274
inc dword [ebp - 0x424]
add edi, edi
test edx, edi
je 0x10043260
sub esi, ecx
sub ebx, ecx
cmp dword [ebp - 0x424], 0
mov edi, esi
mov dword [ebp - 0x42c], ebx
mov dword [ebp - 0x428], edi
jne 0x100432cd
mov edx, dword [ebp - 0x43c]
lea ecx, [ebx*4]
push ecx
push edx
lea eax, [ebp - 0x20c]
push eax
call fcn.10086490
mov edx, dword [ebp - 0x430]
mov eax, dword [ebp - 0x418]
lea ecx, [edi*4]
push ecx
push edx
push eax
call fcn.10086490
add esp, 0x18
jmp 0x10043418
xor edx, edx
cmp ebx, 1
jbe 0x10043339
mov eax, dword [ebp - 0x43c]
mov ecx, 0x20
sub ecx, dword [ebp - 0x424]
mov dword [ebp - 0x41c], 1
mov dword [ebp - 0x434], ecx
jmp 0x10043306
mov ecx, dword [ebp - 0x434]
mov esi, dword [eax + 4]
mov ebx, dword [eax]
shl esi, cl
mov ecx, dword [ebp - 0x424]
shr ebx, cl
mov ecx, dword [ebp - 0x41c]
inc ecx
inc edx
xor esi, ebx
mov ebx, dword [ebp - 0x42c]
mov dword [ebp + edx*4 - 0x210], esi
add eax, 4
mov dword [ebp - 0x41c], ecx
cmp ecx, ebx
jb 0x10043300
mov ecx, dword [ebp - 0x440]
lea eax, [edx + ecx]
mov ecx, dword [ebp - 0x438]
mov eax, dword [ecx + eax*4]
mov ecx, dword [ebp - 0x424]
shr eax, cl
mov dword [ebp + edx*4 - 0x20c], eax
test ebx, ebx
je 0x10043376
lea eax, [ebp + ebx*4 - 0x210]
cmp dword [eax], 0
jne 0x10043370
sub eax, 4
dec ebx
jne 0x10043365
mov dword [ebp - 0x42c], ebx
xor edx, edx
cmp edi, 1
jbe 0x100433dc
mov eax, dword [ebp - 0x430]
mov ecx, 0x20
sub ecx, dword [ebp - 0x424]
mov dword [ebp - 0x41c], 1
mov dword [ebp - 0x434], ecx
jmp 0x100433a6
mov ecx, dword [ebp - 0x434]
mov esi, dword [eax + 4]
mov ebx, dword [eax]
shl esi, cl
mov ecx, dword [ebp - 0x424]
shr ebx, cl
mov ecx, dword [ebp - 0x418]
inc edx
add eax, 4
xor esi, ebx
mov dword [ecx + edx*4 - 4], esi
mov ecx, dword [ebp - 0x41c]
inc ecx
mov dword [ebp - 0x41c], ecx
cmp ecx, edi
jb 0x100433a0
mov ebx, dword [ebp - 0x42c]
mov eax, dword [ebp - 0x440]
lea ecx, [edx + eax]
mov eax, dword [ebp - 0x420]
mov esi, dword [eax + ecx*4]
mov ecx, dword [ebp - 0x424]
mov eax, dword [ebp - 0x418]
shr esi, cl
mov dword [eax + edx*4], esi
test edi, edi
je 0x10043418
lea eax, [eax + edi*4 - 4]
cmp dword [eax], 0
jne 0x10043412
sub eax, 4
dec edi
jne 0x10043407
mov dword [ebp - 0x428], edi
test ebx, ebx
je 0x10043730
xor ecx, ecx
mov dword [ebp - 0x420], ecx
cmp dword [ebp - 0x20c], ecx
jne 0x10043441
inc ecx
cmp dword [ebp + ecx*4 - 0x20c], 0
je 0x10043430
mov dword [ebp - 0x420], ecx
lea eax, [ebp + ecx*4 - 0x20c]
mov dword [ebp - 0x430], eax
mov eax, dword [eax]
xor edx, edx
mov dword [ebp - 0x438], eax
lea esi, [edx + 1]
test al, 1
jne 0x1004346e
jmp 0x10043467
mov eax, dword [ebp - 0x438]
add esi, esi
inc edx
test eax, esi
je 0x10043461
sub ebx, ecx
mov dword [ebp - 0x42c], ebx
test edx, edx
jne 0x100434a5
test ecx, ecx
je 0x10043541
mov edx, dword [ebp - 0x430]
lea ecx, [ebx*4]
push ecx
push edx
lea eax, [ebp - 0x20c]
push eax
call fcn.10086800
add esp, 0xc
jmp 0x10043541
xor esi, esi
cmp ebx, 1
jbe 0x10043511
mov eax, dword [ebp - 0x430]
mov ecx, 0x20
sub ecx, edx
mov dword [ebp - 0x434], ecx
mov dword [ebp - 0x41c], 1
jmp 0x100434d6
mov ecx, dword [ebp - 0x434]
mov edi, dword [eax + 4]
mov ebx, dword [eax]
shl edi, cl
mov ecx, edx
shr ebx, cl
mov ecx, dword [ebp - 0x41c]
inc ecx
inc esi
xor edi, ebx
mov ebx, dword [ebp - 0x42c]
mov dword [ebp + esi*4 - 0x210], edi
add eax, 4
mov dword [ebp - 0x41c], ecx
cmp ecx, ebx
jb 0x100434d0
mov edi, dword [ebp - 0x428]
mov ecx, dword [ebp - 0x420]
add ecx, esi
mov eax, dword [ebp + ecx*4 - 0x20c]
mov ecx, edx
shr eax, cl
mov dword [ebp + esi*4 - 0x20c], eax
test ebx, ebx
je 0x10043541
lea eax, [ebp + ebx*4 - 0x210]
cmp dword [eax], 0
jne 0x1004353b
sub eax, 4
dec ebx
jne 0x10043530
mov dword [ebp - 0x42c], ebx
mov eax, dword [ebp - 0x418]
xor ecx, ecx
mov dword [ebp - 0x420], ecx
cmp dword [eax], ecx
jne 0x10043560
inc ecx
cmp dword [eax + ecx*4], 0
je 0x10043553
mov dword [ebp - 0x420], ecx
mov edx, eax
lea eax, [edx + ecx*4]
mov dword [ebp - 0x430], eax
mov eax, dword [eax]
xor edx, edx
lea esi, [edx + 1]
test al, 1
jne 0x1004357d
add esi, esi
inc edx
test eax, esi
je 0x10043576
sub edi, ecx
mov dword [ebp - 0x428], edi
test edx, edx
jne 0x100435b4
test ecx, ecx
je 0x10043661
mov ecx, dword [ebp - 0x430]
mov edx, dword [ebp - 0x418]
lea eax, [edi*4]
push eax
push ecx
push edx
call fcn.10086800
add esp, 0xc
jmp 0x10043661
xor esi, esi
cmp edi, 1
jbe 0x10043624
mov eax, dword [ebp - 0x430]
mov ecx, 0x20
sub ecx, edx
mov dword [ebp - 0x434], ecx
mov dword [ebp - 0x41c], 1
jmp 0x100435e6
mov ecx, dword [ebp - 0x434]
mov edi, dword [eax + 4]
mov ebx, dword [eax]
shl edi, cl
mov ecx, edx
shr ebx, cl
mov ecx, dword [ebp - 0x418]
inc esi
add eax, 4
xor edi, ebx
mov dword [ecx + esi*4 - 4], edi
mov ecx, dword [ebp - 0x41c]
mov edi, dword [ebp - 0x428]
inc ecx
mov dword [ebp - 0x41c], ecx
cmp ecx, edi
jb 0x100435e0
mov ebx, dword [ebp - 0x42c]
mov ecx, dword [ebp - 0x420]
mov eax, dword [ebp - 0x418]
add ecx, esi
mov ecx, dword [eax + ecx*4]
mov dword [ebp - 0x438], ecx
mov ecx, edx
mov edx, dword [ebp - 0x438]
shr edx, cl
mov dword [eax + esi*4], edx
test edi, edi
je 0x10043661
mov edx, eax
lea eax, [edx + edi*4 - 4]
lea esp, [esp]
cmp dword [eax], 0
jne 0x1004365b
sub eax, 4
dec edi
jne 0x10043650
mov dword [ebp - 0x428], edi
mov eax, dword [ebp - 0x418]
push eax
push edi
lea ecx, [ebp - 0x20c]
push ecx
push ebx
lea edx, [ebp - 0x414]
push edx
lea eax, [ebp - 0x43c]
push eax
call fcn.10001690
mov ecx, dword [ebp - 0x43c]
add esp, 0x18
xor edx, edx
mov dword [ebp - 0x438], eax
cmp ecx, 1
jbe 0x100436c8
lea esi, [edx + 1]
lea ecx, [ecx]
mov ebx, dword [ebp + edx*4 - 0x414]
mov eax, dword [ebp + edx*4 - 0x410]
shl eax, 0x1f
shr ebx, 1
xor eax, ebx
mov dword [ebp + edx*4 - 0x414], eax
inc esi
inc edx
cmp esi, ecx
jb 0x100436a0
mov ebx, dword [ebp - 0x42c]
shr dword [ebp + edx*4 - 0x414], 1
lea edx, [ebp + edx*4 - 0x414]
test ecx, ecx
je 0x100436f2
lea eax, [ebp + ecx*4 - 0x418]
cmp dword [eax], 0
jne 0x100436ec
sub eax, 4
dec ecx
jne 0x100436e1
mov dword [ebp - 0x43c], ecx
cmp dword [ebp - 0x438], 0
lea edx, [ebp - 0x414]
jge 0x10043711
mov eax, dword [ebp - 0x418]
mov edi, ecx
mov dword [ebp - 0x428], edi
jmp 0x10043719
mov ebx, ecx
lea eax, [ebp - 0x20c]
add ecx, ecx
add ecx, ecx
push ecx
push edx
push eax
call fcn.10086490
add esp, 0xc
test ebx, ebx
jne 0x10043420
mov edx, dword [ebp - 0x440]
mov ecx, dword [ebp - 0x424]
mov esi, dword [ebp - 0x418]
mov eax, edi
add edi, edx
mov dword [ebp - 0x428], edi
test ecx, ecx
jne 0x10043770
test edx, edx
je 0x100437ad
mov edx, dword [ebp - 0x444]
lea ecx, [eax*4]
push ecx
add edx, esi
push esi
push edx
call fcn.10086800
add esp, 0xc
jmp 0x100437ad
mov dword [esi + edi*4], 0
test eax, eax
je 0x100437ac
mov ebx, 0x20
sub ebx, ecx
lea edx, [esi + edi*4 + 4]
mov edi, dword [esi + eax*4 - 4]
dec eax
mov ecx, ebx
shr edi, cl
mov ecx, dword [ebp - 0x424]
sub edx, 4
xor dword [edx], edi
mov edi, dword [esi + eax*4]
shl edi, cl
mov dword [edx - 4], edi
test eax, eax
jne 0x10043786
mov edi, dword [ebp - 0x428]
inc edi
mov eax, dword [ebp - 0x444]
push eax
push 0
push esi
call fcn.10086410
add esp, 0xc
test edi, edi
je 0x100437d2
lea esi, [esi + edi*4 - 4]
cmp dword [esi], 0
jne 0x100437d2
sub esi, 4
dec edi
jne 0x100437c7
mov ecx, dword [ebp - 0x448]
mov dword [ecx], edi
mov ecx, dword [ebp - 4]
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.1008600b
mov esp, ebp
pop ebp
ret