Function at 0x404924
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
add esp, 0xfffffcf8
mov eax, 0x4c8b10
push ebx
push esi
push edi
mov esi, dword [ebp + 8]
call fcn.0049fef4
mov word [ebp - 0x1c], 8
xor edx, edx
mov dword [ebp - 4], edx
inc dword [ebp - 0x10]
mov word [ebp - 0x1c], 0x14
movsx ecx, byte [esi + 0x41d]
mov dword [ebp - 0x3c], ecx
movsx eax, byte [esi + 0x41e]
mov dword [ebp - 0x40], eax
movsx edx, byte [esi + 0x41f]
mov dword [ebp - 0x44], edx
movsx ecx, byte [esi + 0x420]
mov dword [ebp - 0x48], ecx
movsx eax, byte [esi + 0x421]
mov dword [ebp - 0x4c], eax
movsx edx, byte [esi + 0x423]
mov dword [ebp - 0x50], edx
push 0x64
call fcn.0049f2bc
pop ecx
mov dword [esi + 0x700], eax
xor ecx, ecx
lea eax, [esi + 0x408]
mov edx, ecx
lea ebx, [ecx + ecx*4]
xor dl, byte [eax]
mov edi, dword [esi + 0x700]
inc eax
inc ecx
cmp ecx, 0x14
mov byte [edi + ebx], dl
jl 0x4049a3
mov eax, dword [ebp - 0x3c]
mov edx, dword [ebp - 0x50]
add eax, dword [ebp - 0x40]
lea ebx, [esi + 0x408]
add eax, dword [ebp - 0x44]
add eax, dword [ebp - 0x48]
add eax, dword [ebp - 0x4c]
shl edx, 3
add eax, edx
xor ecx, ecx
mov dword [ebp - 0x54], eax
mov eax, ecx
add eax, eax
lea edx, [ebp - 0x300]
add eax, edx
mov dword [ebp - 0x58], eax
mov eax, ecx
add al, 0x64
xor al, byte [ebx]
mov byte [ebp - 0x59], al
xor eax, eax
mov al, byte [ebp - 0x59]
test eax, eax
jns 0x404a00
add eax, 0xf
sar eax, 4
cmp eax, 0xa
jge 0x404a11
add al, 0x30
mov edx, dword [ebp - 0x58]
mov byte [edx], al
jmp 0x404a18
add al, 0x37
mov edx, dword [ebp - 0x58]
mov byte [edx], al
xor eax, eax
mov al, byte [ebp - 0x59]
and eax, 0x8000000f
jns 0x404a29
dec eax
or eax, 0xfffffff0
inc eax
cmp eax, 0xa
jge 0x404a38
add al, 0x30
mov edx, dword [ebp - 0x58]
mov byte [edx + 1], al
jmp 0x404a40
add al, 0x37
mov edx, dword [ebp - 0x58]
mov byte [edx + 1], al
inc ecx
inc ebx
cmp ecx, 0x14
jl 0x4049dc
xor ecx, ecx
lea ebx, [esi + 0x214c]
lea eax, [ebp - 0x300]
mov dl, byte [eax]
inc eax
xor dl, 0x3c
inc ecx
mov byte [ebx], dl
add ebx, 3
cmp ecx, 0x28
jl 0x404a55
push 0x28
push 0
lea ecx, [ebp - 0x300]
push ecx
call fcn.0049fac0
add esp, 0xc
xor ebx, ebx
lea eax, [ebx + ebx*8]
mov ecx, 0x5a
cdq
idiv dword [ebp - 0x40]
add dword [ebp - 0x54], edx
mov eax, ebx
cdq
idiv ecx
mov al, byte [ebp - 0x54]
cmp ebx, 0x1f3f
mov byte [ebp + edx - 0x2d4], al
jne 0x404acb
fild dword [ebp - 0x3c]
fmul qword [0x405078]
mov eax, dword [ebp - 0x54]
mov ecx, 0x64
cdq
idiv ecx
mov dword [ebp - 0x304], eax
fild dword [ebp - 0x304]
faddp st(1)
call fcn.004a6bd0
mov dword [ebp - 0x4c], eax
movsx edx, byte [esi + 0x41f]
lea edi, [edx + edx*4]
lea edi, [edx + edi*2]
mov eax, edi
add eax, 0x11170
cmp ebx, eax
jne 0x404b21
fild dword [ebp - 0x3c]
fmul qword [0x405078]
mov eax, dword [ebp - 0x54]
mov ecx, 0x64
cdq
idiv ecx
mov dword [ebp - 0x304], eax
fild dword [ebp - 0x304]
faddp st(1)
fsub dword [0x405080]
mov dword [ebp - 0x308], edi
fild dword [ebp - 0x308]
faddp st(1)
call fcn.004a6bd0
mov dword [ebp - 0x48], eax
mov edx, 0x13880
sub edx, edi
cmp ebx, edx
jne 0x404b55
xor ecx, ecx
lea eax, [esi + 0x408]
mov dword [ebp - 0x34], ecx
xor ecx, ecx
xor edx, edx
inc ecx
mov dl, byte [eax]
inc eax
mov edi, edx
lea edx, [edi + edx*4]
lea edx, [edi + edx*2]
lea edx, [edi + edx*8]
lea edx, [edi + edx*2]
add dword [ebp - 0x34], edx
cmp ecx, 0x14
jl 0x404b39
lea eax, [ebx + 0x64]
mov ecx, 3
cdq
idiv ecx
mov edx, dword [ebp - 0x54]
inc ebx
sub edx, eax
cmp ebx, 0x186a0
mov dword [ebp - 0x50], edx
jl 0x404a7b
mov eax, dword [ebp - 0x40]
shl eax, 3
mov ecx, dword [ebp - 0x44]
shl ecx, 2
add eax, ecx
mov dword [ebp - 0x304], eax
fild dword [ebp - 0x304]
fild dword [ebp - 0x50]
fmul qword [0x405084]
faddp st(1)
call fcn.004a6bd0
mov dword [ebp - 0x3c], eax
mov eax, dword [ebp - 0x50]
mov edx, dword [ebp - 0x44]
mov ecx, dword [ebp - 0x48]
shl ecx, 2
lea eax, [eax + eax*2]
shl edx, 3
add edx, ecx
add edx, eax
mov dword [ebp - 0x40], edx
mov edx, dword [ebp - 0x48]
mov ecx, dword [ebp - 0x4c]
shl ecx, 2
shl edx, 3
add edx, ecx
add edx, eax
mov dword [ebp - 0x44], edx
mov edx, dword [ebp - 0x4c]
mov ecx, dword [ebp - 0x50]
shl ecx, 2
shl edx, 3
add edx, ecx
add edx, eax
mov dword [ebp - 0x48], edx
mov edx, dword [ebp - 0x50]
mov ecx, dword [ebp - 0x40]
shl ecx, 2
shl edx, 3
add edx, ecx
add edx, eax
mov dword [ebp - 0x4c], edx
mov edx, dword [ebp - 0x3c]
mov ecx, dword [ebp - 0x44]
shl ecx, 2
shl edx, 3
add edx, ecx
add edx, eax
mov dword [ebp - 0x50], edx
lea edx, [ebp - 0x15c]
mov eax, dword [ebp - 0x34]
mov dword [esi + 0x710], eax
mov eax, dword [ebp - 0x34]
push eax
push 0x4c5e5f
push edx
call fcn.004a3230
add esp, 0xc
lea ecx, [esi + 0x61d]
mov edi, ecx
xor eax, eax
push esi
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
lea esi, [ebp - 0x25c]
xchg edi, esi
mov edx, ecx
mov eax, edi
shr ecx, 2
lea eax, [ebp - 0x25c]
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
pop esi
push eax
push esi
call fcn.00428c54
add esp, 8
lea edx, [ebp - 0x15c]
push edx
lea ecx, [ebp - 0x25c]
push ecx
call fcn.0049fb64
add esp, 8
xor ecx, ecx
lea ebx, [ebp - 0x25c]
mov eax, dword [ebp - 0x34]
mov edi, 0x64
cdq
idiv edi
lea edx, [ecx + 0x64]
inc ecx
imul edx
movsx edx, byte [ebx]
add eax, dword [ebp - 0x3c]
inc ebx
add eax, edx
cmp ecx, 0x14
mov dword [ebp - 0x3c], eax
jl 0x404c83
lea eax, [ebp - 0x270]
push eax
lea ecx, [esi + 0x41d]
push ecx
call fcn.004048d0
add esp, 8
push 0x100
call fcn.0049f2bc
pop ecx
mov dword [ebp - 0x38], eax
mov eax, dword [ebp - 0x38]
push esi
mov esi, eax
xor eax, eax
lea edi, [ebp - 0x25c]
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov edx, ecx
xchg edi, esi
shr ecx, 2
mov eax, edi
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
lea edx, [ebp - 0x25c]
and ecx, 3
rep movsb byte es:[edi], byte [esi]
pop esi
mov eax, dword [ebp - 0x38]
mov dword [esi + 0x1dc0], eax
push edx
call fcn.0049fbf4
pop ecx
mov dword [ebp - 0x30], eax
xor edi, edi
xor ecx, ecx
lea ebx, [ebp - 0x25c]
cmp ecx, dword [ebp - 0x30]
jge 0x404d2d
xor eax, eax
lea edx, [ecx + 1]
mov al, byte [ebx]
inc ebx
imul edx
add edi, eax
inc ecx
cmp ecx, dword [ebp - 0x30]
jl 0x404d1b
xor ecx, ecx
mov eax, dword [esi + 0x3dc]
imul ecx
add dword [ebp - 0x44], eax
inc ecx
cmp ecx, 0x14
jl 0x404d2f
mov edx, dword [esi + 0x3dc]
mov al, byte [esi + 0x41d]
mov ecx, edx
mov byte [ebp - 0x15c], al
lea edx, [ecx + edx*2]
shl edx, 4
add edx, ecx
lea edx, [ecx + edx*2]
add edi, edx
mov dl, byte [esi + 0x41e]
mov byte [ebp - 0x15b], dl
mov cl, byte [esi + 0x41f]
mov byte [ebp - 0x15a], cl
mov al, byte [esi + 0x420]
mov byte [ebp - 0x159], al
lea eax, [ebp - 8]
mov dl, byte [esi + 0x421]
mov byte [ebp - 0x158], dl
lea edx, [ebp - 0x15c]
mov byte [ebp - 0x157], 0
mov word [ebp - 0x1c], 0x20
call fcn.004adb50
mov edx, eax
inc dword [ebp - 0x10]
lea eax, [ebp - 4]
call fcn.004adc7c
dec dword [ebp - 0x10]
lea eax, [ebp - 8]
mov edx, 2
call fcn.004adc4c
lea eax, [ebp - 4]
call fcn.004adf98
mov ecx, eax
xor edx, edx
sub ecx, edi
mov dword [esi + 0x7dc], edx
cmp ecx, 8
jl 0x404df4
cmp ecx, 0x10
jge 0x404df4
mov dword [esi + 0x7dc], 1
add edi, 8
lea eax, [ebp - 4]
call fcn.004adf98
mov ecx, eax
sub ecx, edi
test ecx, ecx
jle 0x404e6d
cmp ecx, 7
jg 0x404e6d
test cl, 1
je 0x404e32
lea eax, [esi + 0x6a0]
mov edx, dword [eax + 0x20]
cmp edx, dword [eax + 0x10]
jne 0x404e2b
and dword [eax + 0x20], 0xfffffeff
mov edx, dword [eax + 0x20]
mov dword [eax + 0x10], edx
jmp 0x404e32
and dword [eax + 0x20], 0xfffffeff
test cl, 2
je 0x404e44
mov eax, dword [0x4c3500]
xor edx, edx
mov dword [eax + 0x2a8], edx
test cl, 4
je 0x404e63
lea eax, [esi + 0x658]
mov dword [eax + 0x20], 1
mov dword [eax + 0x10], 1
inc dword [esi + 0x6f4]
lea eax, [ebp - 4]
call fcn.004adf98
mov edi, eax
lea eax, [ebp - 4]
call fcn.004adf98
cmp edi, eax
je 0x404e9c
xor eax, eax
mov edx, 2
push eax
lea eax, [ebp - 4]
dec dword [ebp - 0x10]
call fcn.004adc4c
pop eax
mov edx, dword [ebp - 0x2c]
mov dword fs:[0], edx
jmp 0x405070
xor ecx, ecx
mov eax, dword [ebp - 0x40]
add eax, edi
sub eax, ecx
mov dword [ebp - 0x40], eax
inc ecx
cmp ecx, 0x14
jl 0x404e9e
xor ecx, ecx
mov edx, dword [ebp - 0x40]
add edx, edi
sub edx, ecx
mov dword [ebp - 0x44], edx
inc ecx
cmp ecx, 0xa
jl 0x404eb0
mov dword [esi + 0x3e0], 1
add edi, 0x7cf
xor ecx, ecx
mov dword [esi + 0x1df0], edi
lea ebx, [ebp - 0x270]
xor eax, eax
inc ecx
mov al, byte [ebx]
inc ebx
xor dword [ebp - 0x48], eax
cmp ecx, 0xa
jl 0x404ede
lea ebx, [esi + 0x51d]
push ebx
call fcn.0049fbf4
pop ecx
mov dword [ebp - 0x34], eax
mov eax, dword [ebp - 0x34]
inc eax
push eax
call fcn.0049f2bc
pop ecx
mov dword [ebp - 0x38], eax
mov edx, dword [ebp - 0x38]
xor eax, eax
push esi
mov edi, ebx
or ecx, 0xffffffff
mov esi, edx
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov edx, ecx
xchg edi, esi
shr ecx, 2
mov eax, edi
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov eax, dword [ebp - 0x38]
mov edx, dword [ebp - 0x34]
pop esi
lea ecx, [ebp - 0x34]
mov byte [eax + edx], 0
push ecx
mov eax, dword [ebp - 0x38]
push eax
push esi
call fcn.00428cc8
add esp, 0xc
xor ebx, ebx
mov eax, ebx
mov ecx, 0xa
cdq
idiv ecx
mov eax, dword [ebp - 0x38]
movsx edx, byte [eax + edx]
xor dword [ebp - 0x4c], edx
mov ecx, dword [ebp - 0x34]
mov edx, dword [ebp - 0x34]
mov eax, ecx
lea ecx, [eax + ecx*4]
shl ecx, 4
sub ecx, eax
add ecx, 0xbe
cmp ebx, ecx
mov ecx, edx
lea edx, [ecx + edx*2]
shl edx, 4
add edx, ecx
add edx, edx
add edx, 0xbe
cmp ebx, edx
jne 0x404fc2
mov eax, dword [ebp - 0x38]
mov edx, dword [ebp - 0x34]
mov byte [eax + edx], 0
xor ecx, ecx
mov eax, dword [ebp - 0x38]
cmp ecx, dword [ebp - 0x34]
jge 0x404fc2
mov edx, ecx
and edx, 0x8000000f
jns 0x404fb2
dec edx
or edx, 0xfffffff0
inc edx
mov dl, byte [ebp + edx - 0x270]
inc ecx
xor byte [eax], dl
inc eax
cmp ecx, dword [ebp - 0x34]
jl 0x404fa3
inc ebx
cmp ebx, 0x186a1
jl 0x404f4d
mov ecx, dword [ebp - 0x40]
mov edx, dword [ebp - 0x44]
mov eax, dword [ebp - 0x50]
shl edx, 2
shl ecx, 3
lea eax, [eax + eax*2]
add ecx, edx
add ecx, eax
mov dword [ebp - 0x3c], ecx
mov ecx, dword [ebp - 0x44]
mov edx, dword [ebp - 0x48]
shl edx, 2
shl ecx, 3
add ecx, edx
add ecx, eax
mov dword [ebp - 0x40], ecx
mov ecx, dword [ebp - 0x4c]
mov edx, dword [ebp - 0x48]
shl ecx, 2
add ecx, eax
add ecx, 3
shl edx, cl
mov dword [ebp - 0x44], edx
mov edx, dword [ebp - 0x50]
mov ecx, dword [ebp - 0x4c]
shl ecx, 3
shl edx, 2
add ecx, edx
add ecx, eax
mov dword [ebp - 0x48], ecx
mov ecx, dword [ebp - 0x38]
add ecx, 0xd0
mov dword [esi + 0xaf0], ecx
mov ecx, dword [ebp - 0x40]
mov edx, dword [ebp - 0x50]
shl edx, 3
shl ecx, 2
add edx, ecx
add edx, eax
mov dword [ebp - 0x4c], edx
mov edx, dword [ebp - 0x3c]
mov ecx, dword [ebp - 0x44]
shl ecx, 2
shl edx, 3
add edx, ecx
add edx, eax
mov al, 1
mov dword [ebp - 0x50], edx
push eax
dec dword [ebp - 0x10]
lea eax, [ebp - 4]
mov edx, 2
call fcn.004adc4c
pop eax
mov edx, dword [ebp - 0x2c]
mov dword fs:[0], edx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret