Function at 0x44056c
Capabilities:
Encode data using xor

Disassembly:
push ecx
push ebx
push ebp
push esi
mov esi, ecx
xor ebx, ebx
push edi
mov ebp, ebx
mov edi, ebx
mov dword [esi + 0x6af80], 2
jmp 0x440532
cmp eax, 3
jb 0x4403b0
mov edx, dword [esi + 0x6af84]
mov eax, dword [esi + 0x6af7c]
shl eax, 5
movzx ecx, byte [edx + esi + 0x1af72]
xor ecx, eax
mov eax, 0x7fff
and ecx, eax
and edx, eax
mov dword [esi + 0x6af7c], ecx
mov ebp, dword [esi + ecx*4 + 0x4af70]
mov dword [esi + edx*4 + 0x2af70], ebp
mov ecx, dword [esi + 0x6af7c]
mov eax, dword [esi + 0x6af84]
mov dword [esi + ecx*4 + 0x4af70], eax
test ebp, ebp
je 0x4403ed
mov eax, dword [esi + 0x6af84]
sub eax, ebp
cmp eax, 0x7efa
ja 0x4403ed
mov eax, dword [esi + 0x6af90]
cmp dword [esi + 0x6afa0], eax
jbe 0x4403d7
mov dword [esi + 0x6afa0], eax
mov edx, ebp
mov ecx, esi
call fcn.004400b8
mov ecx, dword [esi + 0x6af90]
mov edi, eax
cmp edi, ecx
cmova edi, ecx
mov ecx, dword [esi + 0x6af84]
cmp edi, 3
jb 0x4404c8
sub ecx, dword [esi + 0x6af88]
lea eax, [edi - 3]
mov edx, ecx
mov ecx, esi
push eax
call fcn.0043fa65
mov ecx, dword [esi + 0x6af90]
sub ecx, edi
mov dword [esp + 0x10], eax
mov dword [esi + 0x6af90], ecx
cmp edi, dword [esi + 0x6af98]
ja 0x440491
cmp ecx, 3
jb 0x440491
dec edi
inc dword [esi + 0x6af84]
mov edx, dword [esi + 0x6af84]
mov eax, dword [esi + 0x6af7c]
shl eax, 5
movzx ecx, byte [edx + esi + 0x1af72]
xor ecx, eax
mov eax, 0x7fff
and ecx, eax
and edx, eax
mov dword [esi + 0x6af7c], ecx
mov ebp, dword [esi + ecx*4 + 0x4af70]
mov dword [esi + edx*4 + 0x2af70], ebp
mov ecx, dword [esi + 0x6af7c]
mov eax, dword [esi + 0x6af84]
mov dword [esi + ecx*4 + 0x4af70], eax
sub edi, 1
jne 0x44042f
inc dword [esi + 0x6af84]
mov edx, dword [esi + 0x6af84]
jmp 0x4404c2
mov edx, dword [esi + 0x6af84]
add edx, edi
mov edi, ebx
mov dword [esi + 0x6af84], edx
movzx ecx, byte [edx + esi + 0x1af70]
mov dword [esi + 0x6af7c], ecx
movzx eax, byte [edx + esi + 0x1af71]
shl ecx, 5
xor eax, ecx
mov dword [esi + 0x6af7c], eax
mov eax, dword [esp + 0x10]
jmp 0x4404ec
movzx eax, byte [ecx + esi + 0x1af70]
xor edx, edx
push eax
mov ecx, esi
call fcn.0043fa65
dec dword [esi + 0x6af90]
inc dword [esi + 0x6af84]
mov edx, dword [esi + 0x6af84]
test eax, eax
je 0x44051e
mov eax, dword [esi + 0x6af74]
sub edx, eax
test eax, eax
js 0x440505
add eax, 0x1af70
add eax, esi
jmp 0x440507
mov eax, ebx
push ebx
push edx
mov edx, eax
mov ecx, esi
call fcn.0043f897
mov eax, dword [esi + 0x6af84]
mov dword [esi + 0x6af74], eax
mov eax, dword [esi + 0x6af90]
cmp eax, 0x106
jae 0x440538
mov ecx, esi
call fcn.00440226
mov eax, dword [esi + 0x6af90]
test eax, eax
jne 0x440362
mov eax, dword [esi + 0x6af74]
mov ecx, dword [esi + 0x6af84]
sub ecx, eax
test eax, eax
js 0x44055a
lea ebx, [esi + 0x1af70]
add ebx, eax
push 1
push ecx
mov edx, ebx
mov ecx, esi
call fcn.0043f897
pop edi
pop esi
pop ebp
pop ebx
pop ecx
ret
sub esp, 0x14
push ebp
push esi
push edi
mov esi, ecx
xor edi, edi
push 2
mov dword [esp + 0x10], edi
mov dword [esp + 0x14], edi
cmp dword [esi + 4], 3
pop ebp
jg 0x440592
pop edi
pop esi
pop ebp
add esp, 0x14
jmp 0x440346
mov ecx, dword [esi + 0x6af90]
mov eax, dword [esi + 0x6af84]
test ecx, ecx
je 0x44086a
push ebx
mov ebx, eax
mov dword [esp + 0x18], 0x7fff
mov edx, ecx
mov dword [esp + 0x1c], ebp
push 0
pop edi
cmp ecx, 3
jb 0x440613
mov eax, dword [esi + 0x6af7c]
movzx ecx, byte [ebx + esi + 0x1af72]
shl eax, 5
xor ecx, eax
and ecx, dword [esp + 0x18]
and ebx, dword [esp + 0x18]
mov dword [esi + 0x6af7c], ecx
mov eax, dword [esi + ecx*4 + 0x4af70]
mov dword [esi + ebx*4 + 0x2af70], eax
mov ecx, dword [esi + 0x6af7c]
mov dword [esp + 0x10], eax
mov eax, dword [esi + 0x6af84]
mov dword [esi + ecx*4 + 0x4af70], eax
mov ecx, dword [esi + 0x6af90]
mov edx, ecx
mov eax, dword [esi + 0x6af84]
cmp dword [esp + 0x10], 0
mov ebx, dword [esi + 0x6af88]
push 2
mov dword [esi + 0x6af80], ebp
mov dword [esp + 0x24], ebx
mov ebx, ecx
pop ebp
je 0x44068c
mov edi, dword [esp + 0x1c]
cmp edi, dword [esi + 0x6af98]
push 0
pop edi
jae 0x44068c
mov ecx, dword [esp + 0x10]
sub eax, ecx
cmp eax, 0x7efa
ja 0x44068c
cmp dword [esi + 0x6afa0], edx
jbe 0x440659
mov dword [esi + 0x6afa0], edx
mov edx, ecx
mov ecx, esi
call fcn.004400b8
mov ecx, dword [esi + 0x6af90]
mov ebp, eax
cmp ebp, ecx
mov ebx, ecx
cmova ebp, ecx
cmp ebp, 3
jne 0x44068c
mov eax, dword [esi + 0x6af84]
sub eax, dword [esi + 0x6af88]
cmp eax, 0x1000
jbe 0x44068c
push 2
pop ebp
mov eax, dword [esi + 0x6af80]
cmp eax, 3
jb 0x440796
cmp ebp, eax
ja 0x440796
mov edx, dword [esi + 0x6af84]
add ebx, 0xfffffffd
add ebx, edx
add eax, 0xfffffffd
sub edx, dword [esp + 0x20]
mov ecx, esi
push eax
dec edx
call fcn.0043fa65
mov edx, dword [esi + 0x6af80]
xor ecx, ecx
inc ecx
mov dword [esp + 0x20], eax
sub ecx, edx
add dword [esi + 0x6af90], ecx
lea ecx, [edx - 2]
mov dword [esi + 0x6af80], ecx
mov edx, dword [esi + 0x6af84]
inc edx
mov dword [esi + 0x6af84], edx
cmp edx, ebx
ja 0x440739
movzx ecx, byte [edx + esi + 0x1af72]
mov eax, dword [esi + 0x6af7c]
shl eax, 5
xor ecx, eax
and ecx, dword [esp + 0x18]
and edx, dword [esp + 0x18]
mov dword [esi + 0x6af7c], ecx
mov edi, dword [esi + ecx*4 + 0x4af70]
mov dword [esi + edx*4 + 0x2af70], edi
mov ecx, dword [esi + 0x6af7c]
mov eax, dword [esi + 0x6af84]
mov dword [esp + 0x10], edi
mov dword [esi + ecx*4 + 0x4af70], eax
mov edx, dword [esi + 0x6af84]
sub dword [esi + 0x6af80], 1
jne 0x4406dc
xor edi, edi
lea eax, [edx + 1]
mov ebx, eax
mov dword [esi + 0x6af84], eax
push 2
mov dword [esp + 0x18], edi
pop ebp
cmp dword [esp + 0x20], edi
je 0x44078b
mov ecx, dword [esi + 0x6af74]
sub eax, ecx
test ecx, ecx
js 0x440772
lea edx, [esi + 0x1af70]
add edx, ecx
jmp 0x440774
mov edx, edi
push edi
push eax
mov ecx, esi
call fcn.0043f897
mov eax, dword [esi + 0x6af84]
mov ebx, eax
mov dword [esi + 0x6af74], eax
mov ecx, dword [esi + 0x6af90]
jmp 0x440822
cmp dword [esp + 0x14], 0
je 0x440803
mov eax, dword [esi + 0x6af84]
xor edx, edx
mov ecx, esi
movzx eax, byte [eax + esi + 0x1af6f]
push eax
call fcn.0043fa65
mov ecx, dword [esi + 0x6af84]
test eax, eax
je 0x4407ec
mov eax, dword [esi + 0x6af74]
sub ecx, eax
test eax, eax
js 0x4407d5
lea edx, [esi + 0x1af70]
add edx, eax
jmp 0x4407d7
mov edx, edi
push edi
push ecx
mov ecx, esi
call fcn.0043f897
mov ecx, dword [esi + 0x6af84]
mov dword [esi + 0x6af74], ecx
dec dword [esi + 0x6af90]
lea eax, [ecx + 1]
mov ecx, dword [esi + 0x6af90]
mov dword [esi + 0x6af84], eax
jmp 0x440820
inc dword [esi + 0x6af84]
lea ecx, [ebx - 1]
mov eax, dword [esi + 0x6af84]
mov dword [esp + 0x14], 1
mov dword [esi + 0x6af90], ecx
mov ebx, eax
mov edx, ecx
cmp ecx, 0x106
jae 0x440843
mov ecx, esi
call fcn.00440226
mov eax, dword [esi + 0x6af84]
mov ebx, eax
mov ecx, dword [esi + 0x6af90]
mov edx, ecx
test ecx, ecx
jne 0x4405b3
pop ebx
cmp dword [esp + 0x10], ecx
je 0x44086a
movzx eax, byte [eax + esi + 0x1af6f]
xor edx, edx
push eax
mov ecx, esi
call fcn.0043fa65
mov eax, dword [esi + 0x6af84]
mov ecx, dword [esi + 0x6af74]
sub eax, ecx
test ecx, ecx
js 0x44087e
lea edi, [esi + 0x1af70]
add edi, ecx
push 1
push eax
mov edx, edi
mov ecx, esi
call fcn.0043f897
pop edi
pop esi
pop ebp
add esp, 0x14
ret