Function at 0x4206e0
Capabilities:
Encode data using xor

Disassembly:
sub esp, 0x258
push ebx
push ebp
push esi
mov esi, dword [esp + 0x270]
sub esi, 0x10
push edi
lea eax, [esp + 0xc8]
mov ebx, esi
mov edi, esi
push eax
mov dword [esp + 0x278], esi
and ebx, 0xf
shr edi, 4
call fcn.00428e90
mov ebp, dword [esp + 0x274]
lea eax, [ebp + 0x10]
push esi
push eax
lea ecx, [esp + 0xd4]
push ecx
call fcn.0042bf50
lea edx, [esp + 0xd8]
push edx
lea eax, [esp + 0x78]
push eax
call fcn.0042c030
push 0x10
lea ecx, [esp + 0x58]
push ebp
push ecx
call fcn.0040bf50
push 0x10
lea edx, [esp + 0x8c]
push edx
lea eax, [esp + 0xd4]
push eax
call fcn.0040bf50
push 0x10
lea ecx, [esp + 0x70]
push ecx
lea edx, [esp + 0xb0]
push edx
call fcn.0040bf50
push 0x10
lea eax, [esp + 0xa4]
push eax
lea ecx, [esp + 0xcc]
push ecx
call fcn.0040bf50
mov eax, dword [esp + 0x2b4]
add esp, 0x48
push 0x20
lea edx, [esp + 0x7c]
push edx
push 1
push 1
push eax
call dword [esp + 0x28c]
add esp, 0x14
test eax, eax
jne 0x420b57
push 0x10
lea ecx, [esp + 0x7c]
push ecx
lea edx, [esp + 0xc0]
push edx
call fcn.0040bf50
lea eax, [esp + 0x84]
push eax
push 0x80
lea ecx, [esp + 0x138]
push 1
push ecx
call fcn.00425c50
add esp, 0x1c
test eax, eax
jl 0x420afb
push 0
lea edx, [esp + 0x50]
push 2
push edx
call fcn.00425d50
add esp, 0xc
test eax, eax
jl 0x420afb
cmp edi, 1
push 0x10
jbe 0x420825
mov eax, edi
shl eax, 4
lea ecx, [eax + ebp - 0x10]
push ecx
lea edx, [esp + 0x30]
push edx
call fcn.0040bf50
jmp 0x420831
lea eax, [esp + 0x2c]
push 0
push eax
call fcn.0040bf40
add esp, 0xc
test edi, edi
je 0x420860
lea eax, [ebp + 0x10]
push eax
mov ecx, edi
shl ecx, 7
push ecx
push eax
lea edx, [esp + 0x130]
push edx
lea eax, [esp + 0x5c]
push eax
call fcn.00426350
add esp, 0x14
test eax, eax
jl 0x420afb
test ebx, ebx
je 0x42099b
mov esi, edi
shl esi, 4
add esi, ebp
lea edx, [esp + 0x2a]
sub edx, esi
mov dword [esp + 0x38], edx
lea ebp, [esp + 0x28]
lea ecx, [esp + 0x29]
lea edx, [esp + 0x2b]
sub ebp, esi
sub ecx, esi
sub edx, esi
mov eax, esi
mov dword [esp + 0x20], edx
mov dword [esp + 0x24], 4
lea esp, [esp]
mov dl, byte [eax + ebp]
xor byte [eax], dl
mov dl, byte [ecx + eax]
xor byte [eax + 1], dl
mov edx, dword [esp + 0x38]
mov dl, byte [edx + eax]
xor byte [eax + 2], dl
mov edx, dword [esp + 0x20]
mov dl, byte [edx + eax]
xor byte [eax + 3], dl
mov edx, dword [esp + 0x24]
add eax, 4
dec edx
mov dword [esp + 0x24], edx
jne 0x4208a0
xor eax, eax
test ebx, ebx
jbe 0x4208e4
mov dl, byte [eax + esi]
mov cl, byte [eax + esi + 0x10]
xor dl, cl
mov byte [eax + esi], dl
inc eax
cmp eax, ebx
jb 0x4208d3
push ebx
lea ebp, [esi + 0x10]
lea edx, [esp + 0x14]
push ebp
push edx
call fcn.0040bf50
mov eax, 0x10
sub eax, ebx
push eax
lea ecx, [ebx + esi]
push ecx
lea edx, [esp + ebx + 0x24]
push edx
call fcn.0040bf50
lea eax, [esp + 0x28]
push eax
push 0x80
mov ecx, eax
push ecx
lea edx, [esp + 0x148]
push edx
lea eax, [esp + 0x74]
push eax
call fcn.00426350
add esp, 0x2c
test eax, eax
jl 0x420afb
xor eax, eax
mov cl, byte [esp + eax + 0x28]
mov dl, byte [esp + eax + 0x10]
xor dl, cl
mov cl, byte [esp + eax + 0x11]
mov byte [esp + eax + 0x10], dl
mov dl, byte [esp + eax + 0x29]
xor cl, dl
mov dl, byte [esp + eax + 0x12]
mov byte [esp + eax + 0x11], cl
mov cl, byte [esp + eax + 0x2a]
xor dl, cl
mov cl, byte [esp + eax + 0x13]
mov byte [esp + eax + 0x12], dl
mov dl, byte [esp + eax + 0x2b]
xor cl, dl
mov byte [esp + eax + 0x13], cl
add eax, 4
cmp eax, 0x10
jb 0x420935
push ebx
push esi
push ebp
call fcn.0040bf50
push 0x10
lea eax, [esp + 0x20]
push eax
push esi
call fcn.0040bf50
mov esi, dword [esp + 0x28c]
mov ebp, dword [esp + 0x288]
add esp, 0x18
lea ecx, [esp + 0xc8]
push ecx
call fcn.00428e90
push esi
lea esi, [ebp + 0x10]
lea edx, [esp + 0xd0]
push esi
push edx
call fcn.0042bf50
lea eax, [esp + 0xd8]
push eax
lea ecx, [esp + 0x78]
push ecx
call fcn.0042c030
push 0x10
lea edx, [esp + 0x58]
push edx
lea eax, [esp + 0x98]
push eax
call fcn.0040bf50
push 0x10
lea ecx, [esp + 0xd0]
push ecx
lea edx, [esp + 0xb4]
push edx
call fcn.0040bf50
push 0x10
lea eax, [esp + 0x98]
push eax
lea ecx, [esp + 0xd0]
push ecx
call fcn.0040bf50
mov eax, dword [esp + 0x2a8]
push 0x30
lea edx, [esp + 0xb8]
push edx
push 2
push 1
push eax
call dword [esp + 0x2c8]
add esp, 0x50
test eax, eax
mov dword [esp + 0x20], eax
je 0x420b45
lea ecx, [esp + 0xb8]
push ecx
push 0x80
lea edx, [esp + 0x12c]
push 0
push edx
call fcn.00425c50
add esp, 0x10
test eax, eax
jl 0x420afb
push 0
lea eax, [esp + 0x50]
push 2
push eax
call fcn.00425d50
add esp, 0xc
test eax, eax
jl 0x420afb
test edi, edi
je 0x420a9f
push esi
mov ecx, edi
shl ecx, 7
push ecx
push esi
lea edx, [esp + 0x130]
push edx
lea eax, [esp + 0x5c]
push eax
call fcn.00425db0
add esp, 0x14
test eax, eax
jl 0x420afb
test ebx, ebx
je 0x420b26
shl edi, 4
push 0x10
add edi, ebp
lea ecx, [esp + 0x14]
push edi
push ecx
call fcn.0040bf50
add esp, 0xc
xor eax, eax
test ebx, ebx
jbe 0x420ad5
mov cl, byte [esp + eax + 0x10]
mov dl, byte [edi + eax + 0x10]
xor cl, dl
mov byte [esp + eax + 0x10], cl
inc eax
cmp eax, ebx
jb 0x420ac2
lea eax, [esp + 0x10]
push eax
push 0x80
mov ecx, eax
push ecx
lea edx, [esp + 0x130]
push edx
lea eax, [esp + 0x5c]
push eax
call fcn.00425db0
add esp, 0x14
test eax, eax
jge 0x420b0b
pop edi
pop esi
pop ebp
mov eax, 0x2bb
pop ebx
add esp, 0x258
ret
push ebx
lea ecx, [edi + 0x10]
push edi
push ecx
call fcn.0040bf50
push 0x10
lea edx, [esp + 0x20]
push edx
push edi
call fcn.0040bf50
add esp, 0x18
push 0x10
lea eax, [esp + 0x40]
push eax
push ebp
call fcn.0040bf50
mov eax, dword [esp + 0x2c]
add esp, 0xc
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x258
ret
push 0x10
lea ecx, [esp + 0x7c]
push ecx
push ebp
call fcn.0040bf50
add esp, 0xc
xor eax, eax
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x258
ret