Function at 0x502230
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x4c
mov ecx, dword [esp + 0x60]
mov edx, dword [esp + 0x64]
lea eax, [ecx + edx]
cmp edx, 0x20
mov dword [esp + 8], eax
jb 0x5026d1
mov dword [esp + 0x48], edx
add eax, 0xffffffe0
mov dword [esp + 0x1c], eax
mov ebp, 0x61c8864e
mov eax, 0x7a143579
mov dword [esp + 0x18], 0
mov dword [esp + 4], 0x60ea27ee
mov dword [esp + 0x14], 0xadc0b5d6
mov dword [esp + 0x40], ecx
mov dword [esp + 0x10], 0x27d4eb4f
mov dword [esp + 0x20], 0xc2b2ae3d
mov dword [esp + 0x24], 0
nop dword [eax + eax]
mov dword [esp + 0xc], eax
mov dword [esp], ecx
mov eax, dword [ecx]
mov ecx, eax
mov edx, 0xc2b2ae3d
imul ecx, edx
mov edx, 0x27d4eb4f
mul edx
mov esi, 0x27d4eb4f
add edx, ecx
mov ecx, dword [esp]
mov ebx, dword [ecx + 4]
imul ebx, esi
add ebx, edx
add eax, dword [esp + 0x14]
adc ebx, dword [esp + 4]
mov esi, ebx
shld esi, eax, 0x1f
shrd ebx, eax, 1
mov eax, ebx
mov ecx, 0x85ebca87
mul ecx
mov ecx, ebx
mov edi, 0x9e3779b1
imul ecx, edi
add edx, ecx
mov dword [esp + 0x30], esi
mov ecx, esi
mov esi, 0x85ebca87
imul ecx, esi
add ecx, edx
mov dword [esp + 4], ecx
mov ecx, dword [esp]
mov ecx, dword [ecx + 8]
mov dword [esp + 0x14], eax
mov eax, ecx
mov esi, 0x27d4eb4f
mul esi
mov edi, 0xc2b2ae3d
imul ecx, edi
add edx, ecx
mov ecx, dword [esp]
mov ecx, dword [ecx + 0xc]
imul ecx, esi
add ecx, edx
add eax, dword [esp + 0x10]
adc ecx, dword [esp + 0x20]
mov esi, ecx
shld esi, eax, 0x1f
shrd ecx, eax, 1
mov eax, ecx
mov edx, 0x85ebca87
mul edx
mov dword [esp + 0x28], ecx
mov edi, 0x9e3779b1
imul ecx, edi
add edx, ecx
mov dword [esp + 0x34], esi
mov ecx, 0x85ebca87
imul esi, ecx
add esi, edx
mov dword [esp + 0x20], esi
mov ecx, dword [esp]
mov ecx, dword [ecx + 0x10]
mov esi, ecx
mov edx, 0xc2b2ae3d
imul esi, edx
mov dword [esp + 0x10], eax
mov eax, ecx
mov edi, 0x27d4eb4f
mul edi
add edx, esi
mov ecx, dword [esp]
mov ecx, dword [ecx + 0x14]
imul ecx, edi
add ecx, edx
add eax, dword [esp + 0x18]
adc ecx, dword [esp + 0x24]
mov esi, ecx
shld esi, eax, 0x1f
shrd ecx, eax, 1
mov eax, ecx
mov edx, 0x85ebca87
mul edx
mov dword [esp + 0x3c], ecx
mov edi, 0x9e3779b1
imul ecx, edi
add edx, ecx
mov dword [esp + 0x38], esi
mov ecx, 0x85ebca87
imul esi, ecx
add esi, edx
mov dword [esp + 0x24], esi
mov ecx, dword [esp]
mov ecx, dword [ecx + 0x18]
mov dword [esp + 0x18], eax
mov eax, ecx
mov edi, 0x27d4eb4f
mul edi
mov esi, eax
mov eax, 0xc2b2ae3d
imul ecx, eax
add edx, ecx
mov ecx, dword [esp]
mov eax, dword [ecx + 0x1c]
imul eax, edi
add eax, edx
add esi, dword [esp + 0xc]
adc eax, ebp
mov ebp, eax
shld ebp, esi, 0x1f
shrd eax, esi, 1
mov ecx, eax
mov edx, 0x9e3779b1
imul ecx, edx
mov dword [esp + 0x2c], eax
mov esi, 0x85ebca87
mul esi
add edx, ecx
mov dword [esp + 0xc], ebp
imul ebp, esi
add ebp, edx
mov ecx, dword [esp]
add ecx, 0x20
add dword [esp + 0x40], 0x20
cmp ecx, dword [esp + 0x1c]
jbe 0x5022a0
mov dword [esp], ecx
mov ecx, 0xbd7950e
mov eax, ebx
mul ecx
mov edi, eax
imul ecx, ebx, 0x3c6ef363
add ecx, edx
mov edx, 0xf5e54380
mov esi, dword [esp + 0x28]
mov eax, esi
mul edx
mov dword [esp + 0x18], eax
imul eax, dword [esp + 0x30], 0xbd7950e
add eax, ecx
mov dword [esp + 0x14], eax
imul eax, esi, 0x1bbcd8c2
add eax, edx
imul esi, dword [esp + 0x34], 0xf5e54380
add esi, eax
mov edx, 0xbca87000
mov ecx, dword [esp + 0x3c]
mov eax, ecx
mul edx
mov dword [esp + 0x10], eax
imul eax, ecx, 0x779b185e
add eax, edx
imul ecx, dword [esp + 0x38], 0xbca87000
add ecx, eax
mov dword [esp + 0x44], ecx
mov edx, 0x2a1c0000
mov ecx, dword [esp + 0x2c]
mov eax, ecx
mul edx
mov dword [esp + 0x1c], eax
imul ecx, ecx, 0xe6c617af
add ecx, edx
imul eax, dword [esp + 0xc], 0x2a1c0000
add eax, ecx
mov ecx, dword [esp + 4]
shr ecx, 0x1f
or ecx, edi
mov edi, dword [esp + 0x20]
shr edi, 0x19
mov edx, dword [esp + 0x24]
shr edx, 0x14
shr ebp, 0xe
add ecx, dword [esp + 0x18]
adc esi, dword [esp + 0x14]
add ecx, edi
adc esi, 0
add ecx, dword [esp + 0x10]
adc esi, dword [esp + 0x44]
add ecx, edx
adc esi, 0
mov edx, dword [esp + 0x1c]
add edx, ecx
mov edi, esi
adc edi, eax
add edx, ebp
mov ebp, edx
adc edi, 0
mov ecx, 0xf796ca9
mov eax, ebx
mul ecx
imul ecx, ebx, 0xdef35b01
add ecx, edx
imul edx, dword [esp + 0x30], 0xf796ca9
add edx, ecx
mov ebx, edx
shld ebx, eax, 0x1f
shld eax, edx, 0x1f
mov ecx, eax
mov edx, 0x9e3779b1
imul ecx, edx
mov esi, 0x85ebca87
mul esi
add edx, ecx
imul ebx, esi
add ebx, edx
xor ebx, edi
xor eax, ebp
mov ecx, eax
mov edx, 0x9e3779b1
imul ecx, edx
mul esi
mov ebp, edx
add ebp, ecx
imul ebx, esi
add ebp, ebx
mov ecx, 0xc2b2ae63
add eax, ecx
mov dword [esp + 4], eax
mov eax, 0x85ebca77
adc ebp, eax
mov esi, dword [esp + 0x28]
mov eax, esi
mov ecx, 0xf796ca9
mul ecx
imul ecx, esi, 0xdef35b01
add ecx, edx
imul edx, dword [esp + 0x34], 0xf796ca9
add edx, ecx
mov edi, edx
shld edi, eax, 0x1f
shld eax, edx, 0x1f
mov ecx, eax
mov esi, 0x9e3779b1
imul ecx, esi
mov ebx, 0x85ebca87
mul ebx
add edx, ecx
imul edi, ebx
add edi, edx
xor edi, ebp
xor eax, dword [esp + 4]
mov ecx, eax
imul ecx, esi
mul ebx
mov ebp, 0x85ebca87
mov esi, eax
mov ebx, edx
add ebx, ecx
imul edi, ebp
add ebx, edi
mov eax, 0xc2b2ae63
add esi, eax
mov dword [esp + 4], esi
mov eax, 0x85ebca77
adc ebx, eax
mov ecx, dword [esp + 0x3c]
mov eax, ecx
mov edx, 0xf796ca9
mul edx
imul ecx, ecx, 0xdef35b01
add ecx, edx
imul edx, dword [esp + 0x38], 0xf796ca9
add edx, ecx
mov esi, edx
shld esi, eax, 0x1f
shld eax, edx, 0x1f
mov ecx, eax
mov ebp, 0x9e3779b1
imul ecx, ebp
mov edi, 0x85ebca87
mul edi
add edx, ecx
imul esi, edi
add esi, edx
xor esi, ebx
xor eax, dword [esp + 4]
mov ecx, eax
imul ecx, ebp
mul edi
mov ebp, 0x85ebca87
mov ebx, eax
mov edi, edx
add edi, ecx
imul esi, ebp
add edi, esi
mov eax, 0xc2b2ae63
add ebx, eax
mov eax, 0x85ebca77
adc edi, eax
mov ecx, dword [esp + 0x2c]
mov eax, ecx
mov edx, 0xf796ca9
mul edx
imul ecx, ecx, 0xdef35b01
add ecx, edx
imul edx, dword [esp + 0xc], 0xf796ca9
add edx, ecx
mov ebp, edx
shld ebp, eax, 0x1f
shld eax, edx, 0x1f
mov ecx, eax
mov esi, 0x9e3779b1
imul ecx, esi
mov edx, 0x85ebca87
mul edx
add edx, ecx
mov ecx, 0x85ebca87
imul ebp, ecx
add ebp, edx
xor ebp, edi
xor eax, ebx
mov edi, eax
imul edi, esi
mul ecx
mov ebx, 0x85ebca87
mov esi, eax
mov ecx, edx
add ecx, edi
imul ebp, ebx
add ecx, ebp
mov eax, 0xc2b2ae63
add esi, eax
mov eax, 0x85ebca77
adc ecx, eax
mov ebx, dword [esp + 0x40]
mov edx, dword [esp + 0x48]
jmp 0x5026e0
mov dword [esp], ecx
mov ebx, ecx
mov esi, 0x165667c5
mov ecx, 0x27d4eb2f
add esi, edx
adc ecx, 0
lea eax, [ebx + 8]
mov edx, dword [esp + 8]
cmp eax, edx
jbe 0x5026fa
mov eax, edx
mov edx, dword [esp]
jmp 0x50279a
mov edx, dword [esp]
mov edi, edx
nop
mov dword [esp], edx
mov eax, dword [edx]
mov ebx, eax
mov edx, 0xc2b2ae3d
imul ebx, edx
mov ebp, 0x27d4eb4f
mul ebp
add ebx, edx
mov edx, dword [esp]
mov edx, dword [edx + 4]
imul edx, ebp
add edx, ebx
mov ebx, edx
shld ebx, eax, 0x1f
shld eax, edx, 0x1f
mov ebp, eax
mov edx, 0x9e3779b1
imul ebp, edx
mov edx, 0x85ebca87
mul edx
add ebp, edx
mov edx, 0x85ebca87
imul ebx, edx
add ebx, ebp
xor ebx, ecx
xor eax, esi
mov ecx, ebx
shld ecx, eax, 0x1b
shld eax, ebx, 0x1b
mov ebp, 0x85ebca77
mov esi, eax
mov edx, 0x9e3779b1
imul esi, edx
mov ebx, 0x85ebca87
mul ebx
add edx, esi
imul ecx, ebx
add ecx, edx
mov edx, dword [esp]
mov esi, eax
mov eax, dword [esp + 8]
mov ebx, 0xc2b2ae63
add esi, ebx
adc ecx, ebp
add edx, 8
lea ebx, [edi + 8]
add edi, 0x10
cmp edi, eax
mov edi, ebx
jbe 0x502700
mov ebp, edx
mov edx, 0x85ebca87
add ebx, 4
cmp ebx, eax
jbe 0x5027b3
mov edx, ebp
cmp edx, eax
jb 0x50280b
jmp 0x5028f9
mov edi, dword [ebp]
mov eax, edi
mul edx
mov ebx, 0x9e3779b1
imul edi, ebx
add edi, edx
xor edi, ecx
xor eax, esi
mov ecx, edi
shld ecx, eax, 0x17
shld eax, edi, 0x17
mov esi, eax
mov edx, 0xc2b2ae3d
imul esi, edx
mov edi, 0x27d4eb4f
mul edi
add edx, esi
imul ecx, edi
mov edi, 0x165667b1
add ecx, edx
mov edx, ebp
mov esi, eax
mov eax, dword [esp + 8]
mov ebx, 0x9e3779f9
add esi, ebx
adc ecx, edi
add edx, 4
cmp edx, eax
jae 0x5028f9
sub eax, edx
lea ebp, [edx + 1]
test al, 1
je 0x502856
movzx ebx, byte [edx]
mov eax, ebx
mov edx, 0x165667c5
mul edx
mov edi, eax
mov eax, 0x27d4eb2f
imul ebx, eax
add ebx, edx
xor ebx, ecx
xor edi, esi
mov ecx, ebx
shld ecx, edi, 0xb
shld edi, ebx, 0xb
mov eax, edi
mov esi, 0x85ebca87
mul esi
mov ebx, 0x9e3779b1
imul edi, ebx
add edx, edi
imul ecx, esi
add ecx, edx
mov edx, ebp
mov esi, eax
cmp dword [esp + 8], ebp
mov ebx, 0x27d4eb2f
je 0x5028f9
nop word cs:[eax + eax]
movzx eax, byte [edx]
mov ebp, 0x9e3779b1
mov edi, eax
imul edi, ebx
mov ebx, edx
mov edx, 0x165667c5
mul edx
add edi, edx
xor edi, ecx
xor eax, esi
mov esi, edi
shld esi, eax, 0xb
shld eax, edi, 0xb
mov edi, eax
imul edi, ebp
mov ebp, 0x85ebca87
mul ebp
mov ecx, eax
add edi, edx
imul esi, ebp
add esi, edi
movzx eax, byte [ebx + 1]
mov edi, eax
mov edx, 0x27d4eb2f
imul edi, edx
mov edx, 0x165667c5
mul edx
add edi, edx
xor edi, esi
xor eax, ecx
mov ecx, edi
shld ecx, eax, 0xb
shld eax, edi, 0xb
mov edi, 0x9e3779b1
mov esi, eax
mul ebp
imul esi, edi
add edx, esi
imul ecx, ebp
add ecx, edx
mov edx, ebx
mov ebx, 0x27d4eb2f
add edx, 2
mov esi, eax
cmp edx, dword [esp + 8]
jne 0x502870
mov eax, ecx
shr eax, 1
xor eax, esi
mov ebx, 0xc2b2ae3d
imul ebx, eax
mov ebp, 0x27d4eb4f
mul ebp
mov edi, eax
mov esi, edx
imul ecx, ebp
add esi, ecx
add esi, ebx
mov eax, esi
shld eax, edi, 3
mov ecx, esi
shr ecx, 0x1d
xor esi, ecx
xor edi, eax
mov ecx, 0x9e3779f9
imul esi, ecx
mov eax, edi
mul ecx
mov ecx, 0x165667b1
imul ecx, edi
add edx, esi
add edx, ecx
xor eax, edx
add esp, 0x4c
pop esi
pop edi
pop ebx
pop ebp
ret