Function at 0x4d87e0
Capabilities:
Encode data using xor

Disassembly:
sub esp, 0x214
push ebx
push esi
push edi
xor esi, esi
mov dword [esp + 0x10], esi
push ebp
cmp dword [esp + 0x228], esi
jne 0x4d8808
mov ax, 0xc9
pop ebp
pop edi
pop esi
pop ebx
add esp, 0x214
ret
cmp dword [esp + 0x22c], 0
jne 0x4d8821
mov ax, 0xc9
pop ebp
pop edi
pop esi
pop ebx
add esp, 0x214
ret
mov ebp, dword [esp + 0x230]
test ebp, ebp
jne 0x4d883b
mov ax, 0xc9
pop ebp
pop edi
pop esi
pop ebx
add esp, 0x214
ret
xor ebx, ebx
mov bl, byte [esp + 0x238]
test ebx, ebx
je 0x4d8856
cmp ebx, 1
je 0x4d8ded
jmp 0x4d8f82
mov eax, dword [esp + 0x22c]
mov cl, byte [eax + 6]
xor eax, eax
shr cl, 6
mov al, cl
test eax, eax
je 0x4d8879
cmp eax, 1
je 0x4d89e1
jmp 0x4d8f82
xor edi, edi
mov eax, dword [esp + 0x228]
mov ecx, dword [eax]
cmp ecx, edi
jne 0x4d8891
mov si, 0xcc
jmp 0x4d89cc
lea eax, [esp + 0xa0]
mov edx, dword [esp + 0x22c]
push eax
push edx
push ecx
call fcn.004d82f0
add esp, 0xc
test ax, ax
je 0x4d88b7
mov si, ax
jmp 0x4d89cc
test ebx, ebx
je 0x4d88cf
cmp ebx, 1
je 0x4d8945
mov si, 0xa
xor edi, edi
jmp 0x4d89cc
test ebp, ebp
je 0x4d88e6
lea eax, [esp + 0xa0]
push 0x12
push ebp
push eax
call fcn.004e1a20
add esp, 0xc
lea eax, [esp + 0xa0]
lea ecx, [esp + 0x18]
push eax
xor esi, esi
push ecx
call fcn.004e1b80
add esp, 8
xor eax, eax
xor ecx, ecx
xor edx, edx
mov cl, byte [esp + eax + 0x18]
inc eax
mov cl, byte [esp + ecx + 0xfc]
and cl, 0x18
shr cl, 3
mov dl, cl
lea ecx, [eax*2 - 2]
shl edx, cl
or esi, edx
cmp eax, 0x10
jb 0x4d88ff
xor eax, eax
mov dword [esp + 0x10], esi
lea ecx, [esp + 0x13]
mov dl, byte [esp + eax + 0x28]
sub ecx, eax
inc eax
xor byte [ecx], dl
cmp eax, 4
jb 0x4d892d
mov edi, dword [esp + 0x10]
jmp 0x4d89b2
test ebp, ebp
je 0x4d895c
lea eax, [esp + 0xa0]
push 0x12
push ebp
push eax
call fcn.004e1a20
add esp, 0xc
lea eax, [esp + 0xa0]
lea ecx, [esp + 0x18]
push eax
xor esi, esi
push ecx
call fcn.004e1b80
add esp, 8
xor eax, eax
xor ecx, ecx
xor edx, edx
mov cl, byte [esp + eax + 0x18]
inc eax
mov cl, byte [esp + ecx + 0xfc]
and cl, 3
mov dl, cl
lea ecx, [eax*2 - 2]
shl edx, cl
or esi, edx
cmp eax, 0x10
jb 0x4d8975
xor eax, eax
mov dword [esp + 0x10], esi
mov cl, byte [esp + eax + 0x28]
xor byte [esp + eax + 0x10], cl
inc eax
cmp eax, 4
jb 0x4d89a0
mov edi, dword [esp + 0x10]
xor si, si
push 0
lea eax, [esp + 0xa4]
push 0x15c
push eax
call fcn.004e4bc0
add esp, 0xc
test si, si
jne 0x4d8f82
mov ebx, dword [esp + 0x234]
jmp 0x4d8f6c
mov eax, dword [ebp]
mov dword [esp + 0x18], eax
xor eax, eax
mov cl, byte [ebp + 5]
and cl, 7
mov al, cl
test eax, eax
je 0x4d8a0d
cmp eax, 1
je 0x4d8b81
cmp eax, 2
je 0x4d8c76
jmp 0x4d8f82
xor edi, edi
mov eax, dword [esp + 0x228]
mov ecx, dword [eax]
cmp ecx, edi
jne 0x4d8a25
mov si, 0xcc
jmp 0x4d8b6c
lea eax, [esp + 0xa0]
mov edx, dword [esp + 0x22c]
push eax
push edx
push ecx
call fcn.004d82f0
add esp, 0xc
test ax, ax
je 0x4d8a4b
mov si, ax
jmp 0x4d8b6c
test ebx, ebx
je 0x4d8a63
cmp ebx, 1
je 0x4d8adf
mov si, 0xa
xor edi, edi
jmp 0x4d8b6c
test ebp, ebp
je 0x4d8a80
mov eax, dword [esp + 0x18]
lea ecx, [esp + 0xa0]
sub eax, 4
push eax
push ebp
push ecx
call fcn.004e1a20
add esp, 0xc
lea eax, [esp + 0xa0]
lea ecx, [esp + 0x18]
push eax
xor esi, esi
push ecx
call fcn.004e1b80
add esp, 8
xor eax, eax
xor ecx, ecx
xor edx, edx
mov cl, byte [esp + eax + 0x18]
inc eax
mov cl, byte [esp + ecx + 0xfc]
and cl, 0x18
shr cl, 3
mov dl, cl
lea ecx, [eax*2 - 2]
shl edx, cl
or esi, edx
cmp eax, 0x10
jb 0x4d8a99
xor eax, eax
mov dword [esp + 0x10], esi
lea ecx, [esp + 0x13]
mov dl, byte [esp + eax + 0x28]
sub ecx, eax
inc eax
xor byte [ecx], dl
cmp eax, 4
jb 0x4d8ac7
mov edi, dword [esp + 0x10]
jmp 0x4d8b52
test ebp, ebp
je 0x4d8afc
mov eax, dword [esp + 0x18]
lea ecx, [esp + 0xa0]
sub eax, 4
push eax
push ebp
push ecx
call fcn.004e1a20
add esp, 0xc
lea eax, [esp + 0xa0]
lea ecx, [esp + 0x18]
push eax
xor esi, esi
push ecx
call fcn.004e1b80
add esp, 8
xor eax, eax
xor ecx, ecx
xor edx, edx
mov cl, byte [esp + eax + 0x18]
inc eax
mov cl, byte [esp + ecx + 0xfc]
and cl, 3
mov dl, cl
lea ecx, [eax*2 - 2]
shl edx, cl
or esi, edx
cmp eax, 0x10
jb 0x4d8b15
xor eax, eax
mov dword [esp + 0x10], esi
mov cl, byte [esp + eax + 0x28]
xor byte [esp + eax + 0x10], cl
inc eax
cmp eax, 4
jb 0x4d8b40
mov edi, dword [esp + 0x10]
xor si, si
push 0
lea eax, [esp + 0xa4]
push 0x15c
push eax
call fcn.004e4bc0
add esp, 0xc
test si, si
jne 0x4d8f82
mov ebx, dword [esp + 0x234]
jmp 0x4d8f6c
mov eax, dword [esp + 0x228]
cmp dword [eax + 4], 0
jne 0x4d8b97
mov si, 0xcc
jmp 0x4d8f82
mov ebx, dword [esp + 0x234]
cmp ebx, 0x4c
jae 0x4d8bac
mov si, 0xc9
jmp 0x4d8f82
mov dword [esp + 0x2c], 0x40
push 0x40
call fcn.004a876f
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x22c]
add esp, 4
mov ecx, dword [eax + 4]
lea eax, [ebp + ebx]
push ecx
sub eax, 0x40
lea ecx, [esp + 0x30]
push 0x40
mov edx, dword [esp + 0x1c]
push eax
push ecx
push edx
call fcn.004e59d0
lea ecx, [esp + 0x58]
add esp, 0x14
push ecx
call fcn.004e19d0
mov eax, dword [esp + 0x230]
lea ecx, [esp + 0x48]
add esp, 4
add eax, 2
sub ebx, 0x40
push 4
push eax
push ecx
call fcn.004e1a20
lea ecx, [esp + 0x50]
add esp, 0xc
push ebx
push ebp
push ecx
call fcn.004e1a20
lea eax, [esp + 0x50]
lea ecx, [esp + 0x3c]
add esp, 0xc
push eax
push ecx
call fcn.004e1b80
mov ecx, dword [esp + 0x1c]
lea edx, [esp + 0x38]
add esp, 8
push 0x14
push ecx
push edx
call fcn.004e4c00
add esp, 0xc
test eax, eax
mov eax, dword [esp + 0x14]
push 0x40
push 0x4f
push eax
je 0x4d8c66
mov si, 0xcb
call fcn.004e4bc0
add esp, 0xc
jmp 0x4d8f82
xor si, si
call fcn.004e4bc0
add esp, 0xc
jmp 0x4d8f82
mov eax, dword [esp + 0x228]
cmp dword [eax + 8], 0
jne 0x4d8c8c
mov si, 0xcc
jmp 0x4d8f82
mov eax, 2
test eax, eax
je 0x4d8ca2
cmp eax, 1
je 0x4d8ca9
cmp eax, eax
je 0x4d8cb0
xor eax, eax
jmp 0x4d8cb5
mov eax, 4
jmp 0x4d8cb5
mov eax, 0x40
jmp 0x4d8cb5
mov eax, 0x28
mov ebx, dword [esp + 0x234]
xor esi, esi
mov ecx, ebx
sub ecx, eax
lea edx, [ecx + ebp]
mov eax, 4
mov ecx, 0x13
sub ecx, esi
inc esi
shr ecx, 2
sub eax, ecx
lea ecx, [esp + eax*4 + 0xa0]
xor eax, eax
mov al, byte [esi + edx - 1]
mov edi, dword [ecx]
shl edi, 8
or eax, edi
cmp esi, 0x14
mov dword [ecx], eax
jb 0x4d8cc5
add edx, esi
lea edi, [esp + 0x1fc]
lea esi, [esp + 0xa0]
mov ecx, 5
rep movsd dword es:[edi], dword [esi]
xor esi, esi
mov eax, 4
mov ecx, 0x13
sub ecx, esi
inc esi
shr ecx, 2
sub eax, ecx
lea ecx, [esp + eax*4 + 0xa0]
xor eax, eax
mov al, byte [esi + edx - 1]
mov edi, dword [ecx]
shl edi, 8
or eax, edi
cmp esi, 0x14
mov dword [ecx], eax
jb 0x4d8d0b
lea esi, [esp + 0xa0]
lea edi, [esp + 0x210]
mov ecx, 5
rep movsd dword es:[edi], dword [esi]
lea eax, [esp + 0x44]
push eax
call fcn.004e19d0
mov eax, dword [esp + 0x230]
lea ecx, [esp + 0x48]
add esp, 4
add eax, 2
push 4
push eax
push ecx
call fcn.004e1a20
add esp, 0xc
mov eax, 2
test eax, eax
je 0x4d8d8a
cmp eax, 1
je 0x4d8d91
cmp eax, eax
je 0x4d8d98
xor eax, eax
jmp 0x4d8d9d
mov eax, 4
jmp 0x4d8d9d
mov eax, 0x40
jmp 0x4d8d9d
mov eax, 0x28
sub ebx, eax
lea eax, [esp + 0x44]
push ebx
push ebp
push eax
call fcn.004e1a20
lea eax, [esp + 0x50]
lea ecx, [esp + 0x3c]
add esp, 0xc
push eax
push ecx
call fcn.004e1b80
lea ecx, [esp + 0x204]
mov edx, dword [esp + 0x230]
add esp, 8
mov eax, dword [edx + 8]
push ecx
push eax
lea ecx, [esp + 0x38]
push 0x692680
push 0x14
push ecx
call fcn.004e5780
add esp, 0x14
dec eax
jmp 0x4d8f72
xor edi, edi
mov eax, dword [esp + 0x228]
mov ecx, dword [eax]
cmp ecx, edi
jne 0x4d8e0c
mov si, 0xcc
mov ebx, dword [esp + 0x234]
jmp 0x4d8f67
lea eax, [esp + 0xa0]
mov edx, dword [esp + 0x22c]
push eax
push edx
push ecx
call fcn.004d82f0
mov si, ax
add esp, 0xc
test si, si
je 0x4d8e39
mov ebx, dword [esp + 0x234]
jmp 0x4d8f67
test ebx, ebx
je 0x4d8e58
cmp ebx, 1
je 0x4d8ed7
mov si, 0xa
xor edi, edi
mov ebx, dword [esp + 0x234]
jmp 0x4d8f67
mov ebx, dword [esp + 0x234]
test ebp, ebp
je 0x4d8e78
lea eax, [ebx - 4]
lea ecx, [esp + 0xa0]
push eax
push ebp
push ecx
call fcn.004e1a20
add esp, 0xc
lea eax, [esp + 0xa0]
lea ecx, [esp + 0x18]
push eax
xor esi, esi
push ecx
call fcn.004e1b80
add esp, 8
xor eax, eax
xor ecx, ecx
xor edx, edx
mov cl, byte [esp + eax + 0x18]
inc eax
mov cl, byte [esp + ecx + 0xfc]
and cl, 0x18
shr cl, 3
mov dl, cl
lea ecx, [eax*2 - 2]
shl edx, cl
or esi, edx
cmp eax, 0x10
jb 0x4d8e91
xor eax, eax
mov dword [esp + 0x10], esi
lea edx, [esp + 0x13]
mov cl, byte [esp + eax + 0x28]
sub edx, eax
inc eax
xor byte [edx], cl
cmp eax, 4
jb 0x4d8ebf
mov edi, dword [esp + 0x10]
jmp 0x4d8f4d
mov ebx, dword [esp + 0x234]
test ebp, ebp
je 0x4d8ef7
lea eax, [ebx - 4]
lea ecx, [esp + 0xa0]
push eax
push ebp
push ecx
call fcn.004e1a20
add esp, 0xc
lea eax, [esp + 0xa0]
lea ecx, [esp + 0x18]
push eax
xor esi, esi
push ecx
call fcn.004e1b80
add esp, 8
xor eax, eax
xor ecx, ecx
xor edx, edx
mov cl, byte [esp + esi + 0x18]
inc esi
mov cl, byte [esp + ecx + 0xfc]
and cl, 3
mov dl, cl
lea ecx, [esi*2 - 2]
shl edx, cl
or eax, edx
cmp esi, 0x10
jb 0x4d8f10
mov dword [esp + 0x10], eax
xor eax, eax
mov cl, byte [esp + eax + 0x28]
xor byte [esp + eax + 0x10], cl
inc eax
cmp eax, 4
jb 0x4d8f3b
mov edi, dword [esp + 0x10]
xor si, si
push 0
lea eax, [esp + 0xa4]
push 0x15c
push eax
call fcn.004e4bc0
add esp, 0xc
test si, si
jne 0x4d8f82
mov eax, dword [ebp + ebx - 4]
sub eax, edi
mov esi, 0
cmp eax, 1
adc esi, 0xffffffff
and si, 0xcb
cmp dword [esp + 0x14], 0
je 0x4d8f96
mov eax, dword [esp + 0x14]
push eax
call fcn.004a8790
add esp, 4
lea eax, [esp + 0x30]
push 0x14
push 0
push eax
call fcn.004e4bc0
mov ax, si
add esp, 0xc
pop ebp
pop edi
pop esi
pop ebx
add esp, 0x214
ret