Function at 0x416b20
Capabilities:
Encode data using xor

Disassembly:
push ecx
push ecx
mov eax, dword [esp + 0x14]
push ebx
push ebp
mov ebx, eax
lea edx, [eax - 0x798]
xor ebx, 0x5413
mov eax, dword [esp + 0x14]
push edi
mov edi, dword [esp + 0x24]
add eax, 0xffffecfb
mov ecx, edi
mov dword [esp + 0x20], ebx
mov ebp, edi
mov dword [esp + 0x10], edx
xor ecx, 0x702a
xor edi, 0x7aeb
xor ebp, 0x727f
mov dword [esp + 0xc], ecx
mov dword [esp + 0x24], edi
cmp edx, eax
je 0x416e43
mov eax, ebp
xor eax, 0xcf5
push esi
mov esi, dword [esp + 0x20]
cmp ecx, eax
jl 0x416cac
mov eax, dword [0x60d7a4]
cmp eax, dword [esi + 0xb0]
jb 0x416b9d
mov dword [esi + 0xf4], 0x4a6ab0
xor edi, edi
mov eax, dword [esi + 0xe8]
sub eax, 0x1d469f
or dword [esi + 0xd8], eax
mov eax, dword [0x60d7f8]
add eax, 0xffea4970
mov ebx, dword [esi + 0x64]
or dword [esi + 4], eax
mov eax, dword [esi + 0xf4]
mov ecx, dword [edi + eax]
add edi, 4
mov eax, dword [esi + 0xa4]
xor eax, 1
imul ebx, ecx
mov dword [esi + 0x68], eax
mov eax, 0x123850
sub eax, dword [esi + 4]
add dword [esi + 0x60], eax
mov eax, dword [0x603bec]
mov edx, ebx
shr edx, 8
mov eax, dword [eax + 0x78]
add eax, dword [esi + 0x2c]
xor eax, 0x1f925b20
imul eax, dword [esi + 0x84]
mov dword [esi + 0x84], eax
mov eax, 0x1d3ef4
sub eax, dword [esi + 0x88]
mov ecx, dword [0x603bec]
add dword [ecx + 4], eax
mov eax, dword [0x603bec]
mov ecx, dword [eax + 0x7c]
mov eax, dword [esi + 0xf8]
mov byte [ecx + eax], dl
mov eax, dword [0x603bec]
inc dword [eax + 0x7c]
mov eax, dword [esi + 0x7c]
mov ecx, dword [esi + 0xf8]
mov byte [ecx + eax], bl
inc dword [esi + 0x7c]
mov eax, dword [esi + 0x114]
xor eax, 1
imul eax, dword [esi + 0x68]
mov dword [esi + 0x68], eax
mov eax, dword [0x603bec]
mov eax, dword [eax + 0x2c]
imul eax, dword [esi + 0x60]
mov dword [esi + 0x60], eax
mov eax, dword [esi + 0xb4]
add eax, 0xfff70b11
add eax, dword [esi + 0x114]
add dword [esi + 0xb0], eax
mov eax, dword [esi + 0xc0]
xor eax, 0x48
imul eax, dword [esi + 0xa8]
mov dword [esi + 0xa8], eax
cmp edi, 0xc0030
jl 0x416b9f
mov edi, dword [esp + 0x28]
mov ebx, dword [esp + 0x24]
mov ecx, dword [esp + 0x10]
mov edx, dword [esp + 0x14]
lea eax, [edi + 0xb1a]
cmp edx, eax
jg 0x416e01
mov eax, dword [esi + 0xe8]
sub eax, 0x1d34de
mov dword [0x60d784], eax
mov eax, dword [esi + 0xfc]
cmp eax, dword [0x60d744]
jne 0x416ce9
mov eax, dword [esi + 0x3c]
xor eax, dword [esi + 4]
sub eax, dword [esi + 0x44]
xor dword [0x60d764], eax
jmp 0x416cf0
add dword [esi + 0x64], 0xe508eb40
mov dword [esi + 0xf4], 0x568998
xor ebp, ebp
mov eax, dword [0x603bec]
mov eax, dword [eax + 0xf4]
mov edx, dword [eax + ebp]
mov eax, 0x1d3ef4
sub eax, dword [esi + 0xfc]
add ebp, 4
mov dword [esi + 0x88], eax
mov ecx, dword [0x60d798]
mov eax, dword [0x60d7e0]
add ecx, 0xffffffb7
add eax, ecx
mov dword [0x60d798], eax
mov eax, dword [esi + 0xfc]
sub eax, dword [esi + 4]
mov ebx, dword [esi + 0x64]
add eax, 0x123850
xor dword [0x60d780], eax
mov eax, dword [esi + 0x24]
xor eax, 1
imul ebx, edx
add dword [esi + 0x88], eax
mov eax, dword [esi + 0x44]
xor eax, dword [esi + 0xc8]
mov ecx, dword [esi + 0x88]
sub ecx, eax
add ecx, 0x11a0bd
mov dword [esi + 0x88], ecx
mov eax, dword [esi + 0x7c]
mov ecx, dword [esi + 0xf8]
mov byte [ecx + eax], bl
inc dword [esi + 0x7c]
mov eax, dword [0x60d7e8]
mov ecx, dword [esi + 0x114]
dec eax
xor dword [esi + 0xa8], eax
xor eax, eax
xor ecx, dword [0x60d7c8]
inc eax
mov edx, dword [0x603bec]
sub eax, ecx
add dword [edx + 0xe8], eax
mov eax, dword [0x603bec]
mov eax, dword [eax + 0x10]
sub eax, 0x24
or dword [esi + 0x44], eax
mov eax, dword [esi + 0x10]
xor eax, 0x24
add dword [0x60d81c], eax
mov eax, dword [0x60d808]
add eax, 0xffe2b960
add eax, dword [esi + 0xa8]
add dword [esi + 0x24], eax
mov ecx, dword [0x603bec]
mov eax, dword [esi + 0xd8]
sub eax, 0x15b68f
imul eax, dword [ecx + 0x10]
mov dword [ecx + 0x10], eax
cmp ebp, 0x999c0
jl 0x416cfc
jmp 0x416e42
mov eax, dword [esi + 0x44]
or eax, edx
or eax, 0x4191
cmp ebx, eax
ja 0x416e42
or ebp, 0x42b1
cmp ebx, ebp
jl 0x416e42
mov eax, dword [0x603bec]
mov eax, dword [eax + 0x38]
or eax, ecx
push eax
call dword [0x41801c]
mov ecx, dword [0x603bec]
mov ecx, dword [ecx + 0x50]
or ecx, ebx
push ecx
call dword [0x418014]
call dword [0x41800c]
pop esi
xor edi, 0x14d
mov eax, edi
pop edi
pop ebp
pop ebx
pop ecx
pop ecx
ret