Function at 0x4a16c0
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0xe0
mov eax, dword [0x638034]
xor eax, ebp
mov dword [ebp - 4], eax
mov eax, dword [ebp + 8]
and dword [ebp - 0xc0], 0
and dword [ebp - 0xb0], 0
mov dword [ebp - 0xd4], eax
mov eax, dword [ebp + 0x18]
mov dword [ebp - 0x9c], eax
mov eax, dword [ebp + 0x20]
push ebx
mov ebx, dword [ebp + 0x14]
push esi
mov esi, dword [ebp + 0x10]
mov dword [ebp - 0xe0], eax
mov eax, dword [ebp + 0x24]
mov dword [ebp - 0xd8], eax
mov eax, dword [ebp + 0x28]
push edi
shr esi, 3
xor edi, edi
mov dword [ebp - 0xdc], eax
mov eax, dword [ebp + 0x2c]
mov dword [ebp - 0x94], ebx
mov dword [ebp - 0x90], eax
mov dword [ebp - 0xbc], 2
cmp esi, 0x14
je 0x4a174b
cmp esi, 0x1c
je 0x4a174b
cmp esi, 0x20
je 0x4a174b
xor eax, eax
jmp 0x4a1dd7
test ebx, ebx
jne 0x4a1774
cmp esi, 0x14
jne 0x4a175b
call fcn.004582b7
jmp 0x4a176c
cmp esi, 0x1c
jne 0x4a1767
call fcn.004582bd
jmp 0x4a176c
call fcn.004582c3
mov dword [ebp - 0x94], eax
jmp 0x4a177d
push ebx
call fcn.00465f96
pop ecx
mov esi, eax
mov ecx, dword [ebp - 0x9c]
mov eax, 0x200
cmp dword [ebp + 0xc], eax
cmovae eax, dword [ebp + 0xc]
add eax, 0x3f
and eax, 0xffffffc0
mov dword [ebp - 0xc4], eax
test ecx, ecx
je 0x4a17ce
mov eax, dword [ebp + 0x1c]
cmp eax, esi
jae 0x4a17bd
push 0x55
push 0x5ceec0
push 0x6e
push 0x7d
push 0xa
call fcn.0045b227
add esp, 0x14
jmp 0x4a1744
cmova eax, esi
push eax
push ecx
lea eax, [ebp - 0x64]
push eax
call fcn.0055ecf0
add esp, 0xc
call fcn.0047d24a
mov dword [ebp - 0xa8], eax
test eax, eax
je 0x4a1db7
call fcn.00460adb
mov edi, eax
test edi, edi
je 0x4a1db7
push edi
call fcn.00460b39
push edi
call fcn.00460a7c
push edi
mov dword [ebp - 0x88], eax
call fcn.00460a7c
push edi
mov dword [ebp - 0xa4], eax
call fcn.00460a7c
push edi
mov dword [ebp - 0xb4], eax
call fcn.00460a7c
push edi
mov dword [ebp - 0x98], eax
call fcn.00460a7c
push edi
mov dword [ebp - 0xa0], eax
call fcn.00460a7c
push edi
mov dword [ebp - 0xc8], eax
call fcn.00460a7c
push edi
mov dword [ebp - 0x8c], eax
call fcn.00460a7c
mov ebx, eax
add esp, 0x24
mov dword [ebp - 0xd0], ebx
test ebx, ebx
je 0x4a1db7
mov eax, dword [ebp - 0xc4]
dec eax
push eax
mov dword [ebp - 0xcc], eax
call fcn.0045fdf7
push eax
push ebx
call fcn.0047bf7f
add esp, 0xc
test eax, eax
je 0x4a1db7
push dword [ebp - 0xb0]
xor ebx, ebx
cmp dword [ebp - 0x9c], ebx
push 0
push dword [ebp - 0x90]
sete bl
call fcn.00462f6e
add esp, 0xc
inc dword [ebp - 0xb0]
test eax, eax
je 0x4a1db7
cmp dword [ebp - 0x9c], 0
jne 0x4a18d6
lea eax, [ebp - 0x64]
push esi
push eax
call fcn.00499ede
pop ecx
pop ecx
test eax, eax
jle 0x4a1db7
jmp 0x4a18dd
and dword [ebp - 0x9c], 0
push esi
lea eax, [ebp - 0x64]
push eax
lea eax, [ebp - 0x44]
push eax
call fcn.0055ecf0
push esi
lea eax, [ebp - 0x64]
push eax
lea eax, [ebp - 0x84]
push eax
call fcn.0055ecf0
lea eax, [esi - 1]
add esp, 0x18
test eax, eax
js 0x4a1912
add byte [ebp + eax - 0x44], 1
jne 0x4a1912
sub eax, 1
jns 0x4a1906
push 0
push dword [ebp - 0x94]
lea eax, [ebp - 0x24]
push 0
push eax
lea eax, [ebp - 0x64]
push esi
push eax
call fcn.0046bff7
add esp, 0x18
test eax, eax
je 0x4a1db7
push 0
push dword [ebp - 0x94]
lea eax, [ebp - 0x84]
push 0
push eax
lea eax, [ebp - 0x44]
push esi
push eax
call fcn.0046bff7
add esp, 0x18
test eax, eax
je 0x4a1db7
xor ecx, ecx
test esi, esi
jle 0x4a1971
mov al, byte [ebp + ecx - 0x84]
xor byte [ebp + ecx - 0x24], al
inc ecx
cmp ecx, esi
jl 0x4a1961
push dword [ebp - 0x98]
or byte [ebp - 0x24], 0x80
lea eax, [ebp - 0x24]
or byte [ebp + esi - 0x25], 1
push esi
push eax
call fcn.0045f6cb
add esp, 0xc
test eax, eax
je 0x4a1db7
push dword [ebp - 0x90]
push ebx
push edi
push 0x40
push dword [ebp - 0x98]
call fcn.004631ca
add esp, 0x14
test eax, eax
jg 0x4a19bc
je 0x4a1888
jmp 0x4a1db7
mov ebx, dword [ebp - 0x90]
push 0
push 2
push ebx
call fcn.00462f6e
add esp, 0xc
test eax, eax
je 0x4a1db7
push 0
push 3
push ebx
call fcn.00462f6e
add esp, 0xc
test eax, eax
je 0x4a1db7
mov eax, dword [ebp - 0xc4]
xor ecx, ecx
mov dword [ebp - 0xac], 0xa0
dec eax
xor edx, edx
mov dword [ebp - 0xb8], ecx
div dword [ebp - 0xac]
mov dword [ebp - 0xac], eax
jmp 0x4a1a1b
mov ebx, dword [ebp - 0x90]
test ecx, ecx
je 0x4a1a33
push ecx
push 0
push ebx
call fcn.00462f6e
add esp, 0xc
test eax, eax
je 0x4a1db7
push 0
push dword [ebp - 0xb4]
call fcn.0045fd5b
xor ebx, ebx
pop ecx
pop ecx
cmp dword [ebp - 0xac], ebx
jl 0x4a1aed
lea eax, [esi - 1]
test eax, eax
js 0x4a1a63
add byte [ebp + eax - 0x44], 1
jne 0x4a1a63
sub eax, 1
jns 0x4a1a57
push 0
push dword [ebp - 0x94]
lea eax, [ebp - 0x24]
push 0
push eax
lea eax, [ebp - 0x44]
push esi
push eax
call fcn.0046bff7
add esp, 0x18
test eax, eax
je 0x4a1db7
push dword [ebp - 0x88]
lea eax, [ebp - 0x24]
push esi
push eax
call fcn.0045f6cb
add esp, 0xc
test eax, eax
je 0x4a1db7
mov eax, esi
shl eax, 3
imul eax, ebx
push eax
mov eax, dword [ebp - 0x88]
push eax
push eax
call fcn.0047bf7f
add esp, 0xc
test eax, eax
je 0x4a1db7
push dword [ebp - 0x88]
mov eax, dword [ebp - 0xb4]
push eax
push eax
call fcn.00460d5c
add esp, 0xc
test eax, eax
je 0x4a1db7
inc ebx
cmp ebx, dword [ebp - 0xac]
jle 0x4a1a50
push dword [ebp - 0xcc]
mov ebx, dword [ebp - 0xb4]
push ebx
call fcn.0045fafe
pop ecx
pop ecx
test eax, eax
je 0x4a1db7
push ebx
push dword [ebp - 0xa0]
call fcn.0045f94e
pop ecx
pop ecx
test eax, eax
je 0x4a1db7
mov ebx, dword [ebp - 0xd0]
mov eax, dword [ebp - 0xa0]
push ebx
push eax
push eax
call fcn.00460d5c
add esp, 0xc
test eax, eax
je 0x4a1db7
push dword [ebp - 0x98]
push dword [ebp - 0x88]
call fcn.0047bfc5
pop ecx
pop ecx
test eax, eax
je 0x4a1db7
push edi
push dword [ebp - 0x88]
push dword [ebp - 0xa0]
push dword [ebp - 0xc8]
push 0
call fcn.00461b86
add esp, 0x14
test eax, eax
je 0x4a1db7
call fcn.0045fdf7
push eax
push dword [ebp - 0xc8]
push dword [ebp - 0x88]
call fcn.00460dbd
add esp, 0xc
test eax, eax
je 0x4a1db7
push dword [ebp - 0x88]
push dword [ebp - 0xa0]
push dword [ebp - 0x8c]
call fcn.00460dbd
add esp, 0xc
test eax, eax
je 0x4a1db7
push ebx
push dword [ebp - 0x8c]
call fcn.0045f84b
pop ecx
pop ecx
test eax, eax
js 0x4a1bf7
push dword [ebp - 0x90]
push 1
push edi
push 0x40
push dword [ebp - 0x8c]
call fcn.004631ca
add esp, 0x14
test eax, eax
jg 0x4a1c15
jne 0x4a1db7
mov ecx, dword [ebp - 0xb8]
inc ecx
mov dword [ebp - 0xb8], ecx
cmp ecx, 0x1000
jl 0x4a1a15
jmp 0x4a1888
push 1
push 2
push dword [ebp - 0x90]
call fcn.00462f6e
add esp, 0xc
test eax, eax
je 0x4a1db7
call fcn.0045fdf7
push eax
push dword [ebp - 0x8c]
push ebx
call fcn.00460dbd
add esp, 0xc
test eax, eax
je 0x4a1db7
push edi
push dword [ebp - 0x98]
push ebx
push 0
push dword [ebp - 0x88]
call fcn.00461b86
add esp, 0x14
test eax, eax
je 0x4a1db7
push 2
push ebx
call fcn.0045fd5b
pop ecx
pop ecx
test eax, eax
je 0x4a1db7
push edi
push dword [ebp - 0x8c]
push dword [ebp - 0xa8]
call fcn.0047d295
add esp, 0xc
test eax, eax
je 0x4a1db7
jmp 0x4a1ccb
push dword [ebp - 0xa4]
call fcn.0045fa9e
pop ecx
test eax, eax
je 0x4a1cf6
call fcn.0045fdf7
push eax
push ebx
push ebx
call fcn.00460d5c
add esp, 0xc
test eax, eax
je 0x4a1db7
inc dword [ebp - 0xbc]
push dword [ebp - 0xa8]
push edi
push dword [ebp - 0x8c]
push dword [ebp - 0x88]
push ebx
push dword [ebp - 0xa4]
call fcn.0047f6aa
add esp, 0x18
test eax, eax
jne 0x4a1c9d
jmp 0x4a1db7
xor ebx, ebx
inc ebx
push ebx
push 3
push dword [ebp - 0x90]
call fcn.00462f6e
add esp, 0xc
test eax, eax
je 0x4a1db7
mov dword [ebp - 0xc0], ebx
mov ebx, dword [ebp - 0xd4]
push dword [ebx + 8]
call fcn.0045f9d7
push dword [ebx + 0xc]
call fcn.0045f9d7
push dword [ebx + 0x10]
call fcn.0045f9d7
push dword [ebp - 0x8c]
call fcn.0045f995
push dword [ebp - 0x98]
mov dword [ebx + 8], eax
call fcn.0045f995
push dword [ebp - 0xa4]
mov dword [ebx + 0xc], eax
call fcn.0045f995
xor ecx, ecx
mov dword [ebx + 0x10], eax
add esp, 0x18
cmp dword [ebx + 8], ecx
je 0x4a1db1
cmp dword [ebx + 0xc], ecx
je 0x4a1db1
test eax, eax
je 0x4a1db1
mov ecx, dword [ebp - 0xd8]
test ecx, ecx
je 0x4a1d85
mov eax, dword [ebp - 0xb8]
mov dword [ecx], eax
mov ecx, dword [ebp - 0xdc]
test ecx, ecx
je 0x4a1d97
mov eax, dword [ebp - 0xbc]
mov dword [ecx], eax
mov eax, dword [ebp - 0xe0]
test eax, eax
je 0x4a1db7
push esi
lea ecx, [ebp - 0x64]
push ecx
push eax
call fcn.0055ecf0
add esp, 0xc
jmp 0x4a1db7
mov dword [ebp - 0xc0], ecx
push edi
call fcn.004609dc
push edi
call fcn.00460a40
push dword [ebp - 0xa8]
call fcn.0047d1ce
mov eax, dword [ebp - 0xc0]
add esp, 0xc
mov ecx, dword [ebp - 4]
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.005462f1
leave
ret