Function at 0x503cf0
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0xb8
push ebx
push edi
mov edi, dword [ebp + 0x10]
xor ebx, ebx
shr edi, 3
mov dword [ebp - 0x18], ebx
mov dword [ebp - 0x28], 2
cmp edi, 0x14
je 0x503d24
cmp edi, 0x1c
je 0x503d24
cmp edi, 0x20
je 0x503d24
pop edi
xor eax, eax
pop ebx
mov esp, ebp
pop ebp
ret
push esi
mov esi, dword [ebp + 0x14]
test esi, esi
jne 0x503d36
call fcn.00489820
mov esi, eax
mov dword [ebp + 0x14], esi
mov ecx, 0x200
cmp dword [ebp + 0xc], ecx
cmovae ecx, dword [ebp + 0xc]
add ecx, 0x3f
and ecx, 0xffffffc0
mov dword [ebp - 0x1c], ecx
mov ecx, dword [ebp + 0x18]
test ecx, ecx
je 0x503d8b
mov eax, dword [ebp + 0x1c]
cmp eax, edi
jae 0x503d77
push 0x4e
push 0x5d9354
push 0x6e
push 0x7d
push 0xa
call fcn.00473d60
add esp, 0x14
xor eax, eax
pop esi
pop edi
pop ebx
mov esp, ebp
pop ebp
ret
cmova eax, edi
push eax
push ecx
lea eax, [ebp - 0x98]
push eax
call fcn.005849d0
add esp, 0xc
call fcn.004b01e0
mov dword [ebp - 0x14], eax
test eax, eax
je 0x50433f
call fcn.004bac90
mov dword [ebp + 0x10], eax
test eax, eax
je 0x504341
push eax
call fcn.004bad00
mov ebx, dword [ebp + 0x10]
push ebx
call fcn.004bac20
push ebx
mov dword [ebp - 0x34], eax
call fcn.004bac20
push ebx
mov dword [ebp - 0x10], eax
call fcn.004bac20
push ebx
mov dword [ebp - 0x20], eax
call fcn.004bac20
push ebx
mov dword [ebp - 0xc], eax
call fcn.004bac20
push ebx
mov dword [ebp - 0x38], eax
call fcn.004bac20
push ebx
mov dword [ebp - 0x30], eax
call fcn.004bac20
push ebx
mov dword [ebp - 8], eax
call fcn.004bac20
mov ebx, eax
add esp, 0x24
mov dword [ebp - 4], ebx
test ebx, ebx
je 0x503e59
mov eax, dword [ebp - 0x1c]
dec eax
push eax
call fcn.00479cc0
push eax
push ebx
call fcn.004afc70
add esp, 0xc
test eax, eax
je 0x503e59
nop dword [eax]
push dword [ebp - 0x18]
xor ebx, ebx
cmp dword [ebp + 0x18], ebx
push 0
push dword [ebp + 0x2c]
sete bl
call fcn.004f1e50
inc dword [ebp - 0x18]
add esp, 0xc
test eax, eax
je 0x503e59
cmp dword [ebp + 0x18], 0
jne 0x503e6e
lea eax, [ebp - 0x98]
push edi
push eax
call fcn.00471700
add esp, 8
test eax, eax
jg 0x503e75
xor ebx, ebx
push dword [ebp + 0x10]
call fcn.004bab90
mov eax, dword [ebp + 0x10]
add esp, 4
jmp 0x504341
mov dword [ebp + 0x18], 0
push edi
lea eax, [ebp - 0x98]
push eax
lea eax, [ebp - 0x78]
push eax
call fcn.005849d0
push edi
lea eax, [ebp - 0x98]
push eax
lea eax, [ebp - 0xb8]
push eax
call fcn.005849d0
lea eax, [edi - 1]
add esp, 0x18
test eax, eax
js 0x503eb0
add byte [ebp + eax - 0x78], 1
jne 0x503eb0
sub eax, 1
jns 0x503ea4
push 0
push esi
push 0
lea eax, [ebp - 0x58]
push eax
lea eax, [ebp - 0x98]
push edi
push eax
call fcn.00488fb0
add esp, 0x18
test eax, eax
je 0x503e59
push 0
push esi
push 0
lea eax, [ebp - 0xb8]
push eax
lea eax, [ebp - 0x78]
push edi
push eax
call fcn.00488fb0
add esp, 0x18
test eax, eax
je 0x503e59
xor ecx, ecx
test edi, edi
je 0x503f43
cmp edi, 0x20
jb 0x503f43
mov eax, edi
and eax, 0x8000001f
jns 0x503f07
dec eax
or eax, 0xffffffe0
inc eax
mov edx, edi
sub edx, eax
nop dword [eax + eax]
movups xmm0, xmmword [ebp + ecx - 0x58]
movups xmm1, xmmword [ebp + ecx - 0xb8]
pxor xmm1, xmm0
movups xmmword [ebp + ecx - 0x58], xmm1
movups xmm0, xmmword [ebp + ecx - 0x48]
movups xmm1, xmmword [ebp + ecx - 0xa8]
pxor xmm1, xmm0
movups xmmword [ebp + ecx - 0x48], xmm1
add ecx, 0x20
cmp ecx, edx
jl 0x503f10
cmp ecx, edi
jge 0x503f60
nop word [eax + eax]
mov al, byte [ebp + ecx - 0xb8]
xor byte [ebp + ecx - 0x58], al
inc ecx
cmp ecx, edi
jl 0x503f50
push dword [ebp - 0xc]
or byte [ebp - 0x58], 0x80
lea eax, [ebp - 0x58]
or byte [ebp + edi - 0x59], 1
push edi
push eax
call fcn.00479080
add esp, 0xc
test eax, eax
je 0x503e59
push dword [ebp + 0x2c]
push ebx
push dword [ebp + 0x10]
push 0x32
push dword [ebp - 0xc]
call fcn.004f2140
add esp, 0x14
test eax, eax
jg 0x503fa4
je 0x503e20
jmp 0x503e59
mov ebx, dword [ebp + 0x2c]
push 0
push 2
push ebx
call fcn.004f1e50
add esp, 0xc
test eax, eax
je 0x503e59
push 0
push 3
push ebx
call fcn.004f1e50
add esp, 0xc
test eax, eax
je 0x503e59
mov ecx, dword [ebp - 0x1c]
mov eax, 0xcccccccd
mov ebx, dword [ebp - 0x34]
xor esi, esi
mov dword [ebp - 0x24], esi
lea ecx, [ecx - 1]
mul ecx
mov eax, edx
shr eax, 7
mov dword [ebp - 0x2c], eax
nop
test esi, esi
je 0x50400a
push esi
push 0
push dword [ebp + 0x2c]
call fcn.004f1e50
add esp, 0xc
test eax, eax
je 0x503e59
push 0
push dword [ebp - 0x20]
call fcn.00479c00
xor esi, esi
add esp, 8
cmp dword [ebp - 0x2c], esi
jl 0x5040af
lea eax, [edi - 1]
test eax, eax
js 0x50403c
nop dword [eax]
add byte [ebp + eax - 0x78], 1
jne 0x50403c
sub eax, 1
jns 0x504030
push 0
push dword [ebp + 0x14]
lea eax, [ebp - 0x58]
push 0
push eax
lea eax, [ebp - 0x78]
push edi
push eax
call fcn.00488fb0
add esp, 0x18
test eax, eax
je 0x503e59
push ebx
lea eax, [ebp - 0x58]
push edi
push eax
call fcn.00479080
add esp, 0xc
test eax, eax
je 0x503e59
lea eax, [edi*8]
imul eax, esi
push eax
push ebx
push ebx
call fcn.004afc70
add esp, 0xc
test eax, eax
je 0x503e59
mov eax, dword [ebp - 0x20]
push ebx
push eax
push eax
call fcn.004bed30
add esp, 0xc
test eax, eax
je 0x503e59
inc esi
cmp esi, dword [ebp - 0x2c]
jle 0x504022
mov eax, dword [ebp - 0x1c]
mov esi, dword [ebp - 0x20]
dec eax
push eax
push esi
call fcn.00479900
add esp, 8
test eax, eax
je 0x503e59
push esi
mov esi, dword [ebp - 0x38]
push esi
call fcn.004795f0
add esp, 8
test eax, eax
je 0x503e59
push dword [ebp - 4]
push esi
push esi
call fcn.004bed30
add esp, 0xc
test eax, eax
je 0x503e59
push dword [ebp - 0xc]
push ebx
call fcn.004afda0
add esp, 8
test eax, eax
je 0x503e59
push dword [ebp + 0x10]
push ebx
push esi
push dword [ebp - 0x30]
push 0
call fcn.004bfd00
add esp, 0x14
test eax, eax
je 0x503e59
call fcn.00479cc0
push eax
push dword [ebp - 0x30]
push ebx
call fcn.004bedc0
add esp, 0xc
test eax, eax
je 0x503e59
push ebx
push esi
mov esi, dword [ebp - 8]
push esi
call fcn.004bedc0
add esp, 0xc
test eax, eax
je 0x503e59
push dword [ebp - 4]
push esi
call fcn.00479290
add esp, 8
test eax, eax
js 0x504180
mov esi, dword [ebp + 0x2c]
push esi
push 1
push dword [ebp + 0x10]
push 0x32
push dword [ebp - 8]
call fcn.004f2140
add esp, 0x14
test eax, eax
jg 0x50419b
jne 0x503e59
mov esi, dword [ebp - 0x24]
inc esi
mov dword [ebp - 0x24], esi
cmp esi, 0x1000
jl 0x503ff0
mov esi, dword [ebp + 0x14]
jmp 0x503e20
push 1
push 2
push esi
call fcn.004f1e50
add esp, 0xc
test eax, eax
je 0x503e59
call fcn.00479cc0
push eax
push dword [ebp - 8]
push dword [ebp - 4]
call fcn.004bedc0
add esp, 0xc
test eax, eax
je 0x503e59
push dword [ebp + 0x10]
push dword [ebp - 0xc]
push dword [ebp - 4]
push 0
push ebx
call fcn.004bfd00
add esp, 0x14
test eax, eax
je 0x503e59
push 2
push dword [ebp - 4]
call fcn.00479c00
add esp, 8
test eax, eax
je 0x503e59
push dword [ebp + 0x10]
push dword [ebp - 8]
push dword [ebp - 0x14]
call fcn.004b0240
add esp, 0xc
test eax, eax
je 0x503e59
push dword [ebp - 0x14]
push dword [ebp + 0x10]
push dword [ebp - 8]
push ebx
push dword [ebp - 4]
push dword [ebp - 0x10]
call fcn.004bd070
add esp, 0x18
test eax, eax
je 0x503e59
push dword [ebp - 0x10]
call fcn.00479880
add esp, 4
test eax, eax
je 0x504284
call fcn.00479cc0
push eax
mov eax, dword [ebp - 4]
push eax
push eax
call fcn.004bed30
add esp, 0xc
test eax, eax
je 0x503e59
push dword [ebp - 0x14]
inc dword [ebp - 0x28]
push dword [ebp + 0x10]
push dword [ebp - 8]
push ebx
push dword [ebp - 4]
push dword [ebp - 0x10]
call fcn.004bd070
add esp, 0x18
test eax, eax
jne 0x504236
jmp 0x503e59
push 1
push 3
push esi
call fcn.004f1e50
add esp, 0xc
test eax, eax
je 0x503e59
mov ebx, 1
nop
mov esi, dword [ebp + 8]
push dword [esi + 8]
call fcn.00479770
push dword [esi + 0xc]
call fcn.00479770
push dword [esi + 0x10]
call fcn.00479770
push dword [ebp - 8]
call fcn.004796d0
push dword [ebp - 0xc]
mov dword [esi + 8], eax
call fcn.004796d0
push dword [ebp - 0x10]
mov dword [esi + 0xc], eax
call fcn.004796d0
add esp, 0x18
mov dword [esi + 0x10], eax
cmp dword [esi + 8], 0
je 0x503e59
cmp dword [esi + 0xc], 0
je 0x503e59
test eax, eax
je 0x503e59
mov eax, dword [ebp + 0x24]
test eax, eax
je 0x504307
mov ecx, dword [ebp - 0x24]
mov dword [eax], ecx
mov eax, dword [ebp + 0x28]
test eax, eax
je 0x504313
mov ecx, dword [ebp - 0x28]
mov dword [eax], ecx
mov eax, dword [ebp + 0x20]
test eax, eax
je 0x503e5b
push edi
lea ecx, [ebp - 0x98]
push ecx
push eax
call fcn.005849d0
add esp, 0xc
push dword [ebp + 0x10]
call fcn.004bab90
mov eax, dword [ebp + 0x10]
add esp, 4
jmp 0x504341
xor eax, eax
push eax
call fcn.004babe0
push dword [ebp - 0x14]
call fcn.004b0190
add esp, 8
mov eax, ebx
pop esi
pop edi
pop ebx
mov esp, ebp
pop ebp
ret