Function at 0x4202f0
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x3c
mov al, byte [esp + 0x54]
mov edx, dword [esp + 0x50]
mov byte [esp + 0x37], al
mov dword [esp + 0x30], edx
mov dword [esp + 0x2c], ecx
mov edx, dword [0x49b9bc]
imul edx, edx, 0x644aea4a
xor edx, 0x67be6bf0
mov esi, dword [0x493414]
add esi, edx
mov dword [0x493414], esi
mov di, word [0x4888b6]
movsx edx, di
shl edx, 6
add edx, 0xf201dc7f
cmp edx, 0xbf7f4fff
mov dword [esp + 0x1c], ecx
jne 0x42035d
mov eax, dword [0x4958bc]
add eax, 0x41a40002
mov dword [0x4958bc], eax
mov eax, 0x22e36f8b
mov ecx, dword [0x49d834]
or ecx, 0x9fefbb6f
mov dword [0x49d834], ecx
mov ecx, dword [esp + 0x30]
mov edx, dword [esp + 0x1c]
mov dword [edx + 0x2020], ecx
mov ecx, dword [0x495564]
cmp eax, ecx
jl 0x4203a8
mov eax, dword [0x48a8e0]
mov ecx, dword [0x48b270]
or ecx, eax
mov dword [0x48b270], ecx
jmp 0x4203c0
mov ax, word [0x480ae6]
mov cx, ax
xor ecx, 0x7b4f
mov ax, cx
mov word [0x480ae6], ax
jmp 0x4203c5
mov eax, dword [0x498394]
and eax, 0xc5e3636f
mov dword [0x498394], eax
call fcn.0044aea0
mov dword [esp + 0x24], eax
mov eax, dword [0x4915c0]
imul eax, eax, 0x646d0c6c
mov ecx, dword [0x48fc88]
and ecx, eax
mov dword [0x48fc88], ecx
cmp dword [esp + 0x24], 0
setne al
xor al, 0xff
test al, 1
jne 0x4203c5
mov eax, 0x1a1204
mov ecx, dword [0x49b768]
mov edx, dword [0x492fa0]
mov esi, edx
dec esi
mov dword [0x492fa0], esi
imul ecx, edx
cmp eax, ecx
jge 0x420465
mov eax, 0x9bb9f347
mov ecx, dword [0x495c6c]
dec ecx
mov dword [0x495c6c], ecx
cmp eax, ecx
je 0x420460
mov eax, dword [0x49a478]
imul eax, eax, 0x55f99e6c
mov ecx, dword [0x48e8b8]
or ecx, eax
mov dword [0x48e8b8], ecx
jmp 0x420465
mov eax, 0x9119df8e
mov dword [esp + 0x18], eax
call fcn.0044aea0
mov dword [esp + 0x28], eax
mov eax, dword [0x4911a0]
sar eax, 9
mov ecx, dword [0x490b50]
imul eax, ecx
mov ecx, dword [esp + 0x18]
cmp ecx, eax
jg 0x4204b2
mov eax, dword [0x49a5ec]
inc eax
mov dword [0x49a5ec], eax
mov ecx, dword [0x48c02c]
and ecx, eax
mov dword [0x48c02c], ecx
jmp 0x4204c1
mov eax, dword [0x49cec8]
or eax, 0x2d0f3f9c
mov dword [0x49cec8], eax
mov eax, 0x7519060e
mov cl, byte [esp + 0x37]
mov byte [esp + 0x28], cl
mov edx, dword [0x49a920]
and edx, 0x1d058502
mov dword [0x49a920], edx
mov edx, dword [esp + 0x24]
mov esi, esp
mov dword [esi], edx
mov dword [esp + 0x14], eax
call fcn.00404700
mov edx, dword [esp + 0x28]
xor edx, eax
mov dword [esp + 0x28], edx
mov di, word [0x4880d6]
mov ax, di
add eax, 0x1f1688ed
mov di, ax
mov word [0x4880d6], di
mov eax, dword [0x47fb08]
mov edx, dword [esp + 0x1c]
mov esi, dword [edx + 0x2020]
mov ebx, esp
lea ebp, [esp + 0x24]
mov dword [ebx + 4], ebp
mov dword [ebx], esi
mov dword [ebx + 0xc], 0
mov dword [ebx + 8], 8
call eax
sub esp, 0x10
mov dword [esp + 0x20], eax
mov di, word [0x488510]
movsx eax, di
mov edx, dword [esp + 0x14]
cmp edx, eax
jl 0x420565
mov dword [0x498ecc], 0x297629a
cmp dword [esp + 0x20], 8
je 0x420627
mov eax, 0xbbb2300c
mov cx, word [0x487462]
movsx edx, cx
mov esi, dword [0x493924]
and edx, esi
cmp eax, edx
jl 0x4205aa
mov eax, dword [0x48ae4c]
shl eax, 0xa
add eax, 0x94cae78b
mov ecx, dword [0x4927d4]
sub ecx, eax
mov dword [0x4927d4], ecx
mov eax, 0x7ce7a85f
mov ecx, dword [esp + 0x1c]
mov dword [esp + 0x10], eax
call fcn.00404d70
mov dx, word [0x486a50]
movsx eax, dx
xor eax, 0xffffffff
mov ecx, dword [esp + 0x10]
cmp ecx, eax
je 0x4205e4
mov dword [0x4968a8], 0x1bbec3b9
jmp 0x42061a
mov eax, 0x64bba794
mov ecx, dword [0x48a4cc]
add ecx, 0x4ccae1d1
cmp eax, ecx
jg 0x420615
mov ax, word [0x48598c]
mov cx, ax
add ecx, 0xe3788dcf
mov ax, cx
mov word [0x48598c], ax
jmp 0x42061a
mov dword [esp + 0x38], 0xffffffff
jmp 0x420717
mov eax, dword [0x49d504]
and eax, 0x6faefef6
mov dword [0x49d504], eax
mov cl, byte [esp + 0x37]
movzx eax, cl
mov edx, esp
mov dword [edx], eax
mov ecx, dword [esp + 0x1c]
call fcn.004232e0
sub esp, 4
test al, 1
jne 0x420684
mov eax, dword [0x48e2dc]
and eax, 0x958b9d2e
mov dword [0x48e2dc], eax
mov ecx, dword [esp + 0x1c]
call fcn.00404d70
mov dword [0x4998f8], 0x57d07921
mov dword [esp + 0x38], 0xfffffffe
jmp 0x420717
mov eax, dword [0x4961cc]
mov ecx, dword [0x496e7c]
imul eax, ecx
imul eax, eax, 0xf056ac00
mov dword [0x496e7c], eax
mov eax, dword [esp + 0x1c]
mov dword [eax], 0
mov ecx, dword [0x492468]
add ecx, 0x1bd40f9d
mov dword [0x492468], ecx
mov ecx, dword [esp + 0x24]
mov dword [eax + 4], ecx
mov dword [0x49a060], 0xa0e4adb2
mov dword [eax + 0x100c], 0
mov ecx, dword [0x49d588]
and ecx, 0x20cc565c
mov dword [0x49d588], ecx
mov ecx, dword [eax + 0x201c]
mov edx, dword [esp + 0x24]
mov esi, esp
mov dword [esi], edx
call ecx
mov ecx, dword [esp + 0x1c]
mov dword [ecx + 0x1010], eax
mov eax, dword [0x4967a4]
add eax, 0x2334e64f
mov dword [0x4967a4], eax
mov dword [esp + 0x38], 1
mov eax, dword [esp + 0x38]
add esp, 0x3c
pop esi
pop edi
pop ebx
pop ebp
ret 8