Function at 0x420622
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0xf0
mov dword [ebp - 0x10], 0
push ebx
push esi
push edi
lea ecx, [ebp - 0x5c]
push 0x28
mov edi, dword [ebp + 8]
lea eax, [edi + 0x74]
push eax
push ecx
call fcn.004492f0
add esp, 0xc
lea ecx, [ebp - 0x5c]
lea edx, [edi + 0x9c]
push ecx
push edx
push edi
call fcn.00416a8e
add esp, 0xc
mov ebx, dword [ebp - 0x58]
xor ebx, dword [ebp - 0x54]
cmp dword [edi + 0x20c], 0
je 0x4206aa
xor esi, esi
mov edx, 0xff
lea ecx, [esi*8]
shl edx, cl
and edx, ebx
push 0
sar edx, cl
push esi
mov byte [ebp - 1], dl
lea edx, [ebp - 1]
push edx
push edi
call dword [edi + 0x20c]
movzx edx, byte [ebp - 1]
add esp, 0x10
lea ecx, [esi*8]
shl edx, cl
xor ebx, edx
inc esi
cmp esi, 4
jl 0x42066f
lea esi, [edi + 0x4c]
xor ecx, ecx
mov eax, dword [esi]
mov dword [eax + 0x28], ecx
mov edx, dword [edi + 0x50]
cmp word [edx + 0xc8], cx
je 0x4206c7
xor eax, eax
jmp 0x42087c
push 0x94
lea eax, [ebp - 0xf0]
push 0
push eax
call fcn.00449290
add esp, 0xc
push 0
call fcn.00449037
add esp, 4
lea ecx, [ebp - 0xe3]
push eax
push ecx
call fcn.00419666
add esp, 8
lea ecx, [ebp - 0x14]
lea edx, [ebp - 0x18]
lea eax, [ebp - 0x1c]
mov byte [ebp - 0xee], 0x31
push ecx
push edx
push eax
lea ecx, [ebp - 0xc]
push ecx
call fcn.00420998
add esp, 0x10
lea ecx, [ebp - 0x28]
lea eax, [ebp - 0xda]
push ecx
push ebx
push eax
push dword [ebp - 0x1c]
call fcn.00420883
add esp, 0x10
lea ecx, [ebp - 0x28]
lea eax, [ebp - 0xd1]
push ecx
push ebx
push eax
push dword [ebp - 0x18]
call fcn.00420883
add esp, 0x10
lea ecx, [ebp - 0x28]
lea eax, [ebp - 0xc8]
push ecx
push ebx
push eax
push dword [ebp - 0x14]
call fcn.00420883
add esp, 0x10
lea ecx, [ebp - 0x28]
lea eax, [ebp - 0xec]
push ecx
push ebx
push eax
push dword [ebp - 0xc]
call fcn.00420883
add esp, 0x10
lea ecx, [ebp - 0xee]
push ecx
push 0x61
push edi
call fcn.0041cdfd
add esp, 0xc
lea ecx, [ebp - 8]
lea eax, [ebp - 2]
push ecx
push eax
push edi
call fcn.0041c806
add esp, 0xc
cmp dword [edi + 0x14], 0xffffffcc
je 0x420860
cmp dword [ebp - 8], 0
je 0x420860
push 0xffffffffffffffff
lea eax, [ebp - 0x34]
push eax
push ebx
mov eax, dword [ebp - 8]
add eax, 0x14
push eax
push dword [ebp - 0x1c]
push edi
call fcn.004208c4
add esp, 0x18
test eax, eax
je 0x42082b
push 0xffffffffffffffff
lea eax, [ebp - 0x34]
push eax
push ebx
mov eax, dword [ebp - 8]
add eax, 0x1d
push eax
push dword [ebp - 0x18]
push edi
call fcn.004208c4
add esp, 0x18
test eax, eax
je 0x42082b
push 0xffffffffffffffff
lea eax, [ebp - 0x34]
push eax
push ebx
mov eax, dword [ebp - 8]
add eax, 0x26
push eax
push dword [ebp - 0x14]
push edi
call fcn.004208c4
add esp, 0x18
test eax, eax
je 0x42082b
movsx eax, byte [ebp - 2]
push eax
lea ecx, [ebp - 0x34]
push ecx
mov eax, dword [ebp - 8]
push ebx
add eax, 2
push eax
push dword [ebp - 0xc]
push edi
call fcn.004208c4
add esp, 0x18
test eax, eax
je 0x42082b
mov dword [ebp - 0x10], 1
push 8
lea eax, [ebp - 0x34]
push eax
lea ecx, [ebp - 0x28]
push ecx
call fcn.004492f0
add esp, 0xc
cmp dword [ebp - 0x10], 0
je 0x42084d
mov eax, dword [ebp - 0xc]
mov ecx, dword [esi]
mov dword [ecx + 0x28], eax
jmp 0x420860
xor eax, eax
cmp dword [ebp - 8], eax
je 0x420860
cmp eax, 8
jge 0x420860
inc eax
cmp dword [ebp - 8], 0
jne 0x420854
mov eax, dword [esi]
cmp dword [eax + 0x28], 0
jne 0x420873
push 1
push edi
call fcn.00418f4e
add esp, 8
mov eax, dword [esi]
cmp dword [eax + 0x28], 1
sbb eax, eax
inc eax
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret