Function at 0x4a8d90
Capabilities:
Encode data using xor

Disassembly:
push ebp
push edi
push esi
push ebx
sub esp, 0xfc
mov edi, dword [esp + 0x118]
mov esi, dword [esp + 0x110]
mov ebp, dword [esp + 0x124]
shr edi, 3
mov eax, edi
and eax, 0xfffffff7
cmp eax, 0x14
je 0x4a8dd0
xor eax, eax
cmp edi, 0x20
je 0x4a8dd0
add esp, 0xfc
pop ebx
pop esi
pop edi
pop ebp
ret
mov eax, dword [esp + 0x11c]
test eax, eax
je 0x4a9469
cmp dword [esp + 0x114], 0x1ff
mov ebx, 0x200
ja 0x4a9130
cmp edi, ebp
ja 0x4a90d0
mov eax, dword [esp + 0x120]
cmp edi, ebp
cmovbe ebp, edi
test eax, eax
je 0x4a8e28
mov ecx, dword [esp + 0x120]
lea eax, [esp + 0x70]
mov dword [esp + 8], ebp
mov dword [esp], eax
mov dword [esp + 4], ecx
call sub.msvcrt.dll_memcpy
call fcn.0041da10
test eax, eax
mov dword [esp + 0x30], eax
je 0x4a90ee
call fcn.0043eee0
test eax, eax
mov dword [esp + 0x4c], eax
je 0x4a90ee
mov eax, dword [esp + 0x30]
sub ebx, 1
mov dword [esp], eax
call fcn.0041db40
mov eax, dword [esp + 0x30]
mov dword [esp], eax
call fcn.0041dcc0
mov dword [esp + 0x64], eax
mov eax, dword [esp + 0x30]
mov dword [esp], eax
call fcn.0041dcc0
mov dword [esp + 0x2c], eax
mov eax, dword [esp + 0x30]
mov dword [esp], eax
call fcn.0041dcc0
mov dword [esp + 0x3c], eax
mov eax, dword [esp + 0x30]
mov dword [esp], eax
call fcn.0041dcc0
mov dword [esp + 0x24], eax
mov eax, dword [esp + 0x30]
mov dword [esp], eax
call fcn.0041dcc0
mov dword [esp + 0x68], eax
mov eax, dword [esp + 0x30]
mov dword [esp], eax
call fcn.0041dcc0
mov dword [esp + 0x6c], eax
mov eax, dword [esp + 0x30]
mov dword [esp], eax
call fcn.0041dcc0
mov dword [esp + 0x28], eax
mov eax, dword [esp + 0x30]
mov dword [esp], eax
call fcn.0041dcc0
mov dword [esp + 0x60], ebx
mov dword [esp + 0x54], eax
call fcn.0041e070
mov dword [esp + 8], ebx
mov dword [esp + 4], eax
mov eax, dword [esp + 0x54]
mov dword [esp], eax
call fcn.00435da0
test eax, eax
je 0x4a90f6
mov eax, dword [esp + 0x60]
mov edx, 0xcccccccd
mov dword [esp + 0x58], 0
lea ebx, [esp + 0xd0]
mov dword [esp + 0x110], esi
mul edx
lea eax, [edi*8]
mov dword [esp + 0x44], eax
mov dword [esp + 0x40], edx
shr dword [esp + 0x40], 7
mov eax, dword [esp + 0x58]
mov dword [esp + 4], 0
mov dword [esp + 8], eax
mov eax, dword [esp + 0x134]
mov dword [esp], eax
call fcn.0043c0d0
test eax, eax
je 0x4a90f6
lea eax, [esp + 0x70]
test ebp, ebp
mov dword [esp + 0x34], 0
mov dword [esp + 0x50], eax
je 0x4a9450
mov esi, dword [esp + 0x50]
lea eax, [esp + 0xb0]
mov dword [esp + 8], edi
mov dword [esp], eax
mov dword [esp + 4], esi
call sub.msvcrt.dll_memcpy
mov dword [esp + 4], esi
mov esi, edi
mov dword [esp + 8], edi
mov dword [esp], ebx
call sub.msvcrt.dll_memcpy
sub esi, 1
js 0x4a8fd4
add byte [esp + esi + 0xb0], 1
jne 0x4a8fd4
lea eax, [esp + edi + 0xae]
lea ecx, [esp + 0xaf]
jmp 0x4a8fd0
movzx edx, byte [eax]
sub eax, 1
add edx, 1
mov byte [eax + 1], dl
test dl, dl
jne 0x4a8fd4
cmp eax, ecx
jne 0x4a8fc0
mov eax, dword [esp + 0x11c]
lea ebp, [esp + 0x90]
mov dword [esp + 0x14], 0
mov dword [esp + 0xc], 0
mov dword [esp + 8], ebp
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x50]
mov dword [esp + 4], edi
mov dword [esp], eax
call fcn.004631e0
test eax, eax
je 0x4a90f6
mov eax, dword [esp + 0x11c]
mov dword [esp + 0x14], 0
mov dword [esp + 0xc], 0
mov dword [esp + 8], ebx
mov dword [esp + 0x10], eax
lea eax, [esp + 0xb0]
mov dword [esp + 4], edi
mov dword [esp], eax
call fcn.004631e0
test eax, eax
je 0x4a90f6
xor eax, eax
test edi, edi
jle 0x4a9061
movzx edx, byte [ebx + eax]
xor byte [ebp + eax], dl
add eax, 1
cmp edi, eax
jne 0x4a9052
or byte [esp + 0x90], 0x80
mov eax, dword [esp + 0x24]
or byte [esp + esi + 0x90], 1
mov dword [esp + 4], edi
mov dword [esp + 8], eax
mov dword [esp], ebp
call fcn.0041e5c0
test eax, eax
je 0x4a90f6
mov eax, dword [esp + 0x134]
mov dword [esp + 4], 0x32
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x34]
mov dword [esp + 0xc], eax
mov eax, dword [esp + 0x30]
mov dword [esp + 8], eax
mov eax, dword [esp + 0x24]
mov dword [esp], eax
call fcn.0043c150
cmp eax, 0
jg 0x4a9166
jne 0x4a90f6
add dword [esp + 0x58], 1
xor ebp, ebp
jmp 0x4a8f33
test ebp, ebp
je 0x4a8dfd
cmp edi, ebp
cmovbe ebp, edi
call fcn.0041da10
test eax, eax
mov dword [esp + 0x30], eax
jne 0x4a8e39
mov dword [esp + 0x4c], 0
mov eax, dword [esp + 0x30]
test eax, eax
jne 0x4a9147
xor esi, esi
mov ebx, dword [esp + 0x4c]
mov eax, esi
test ebx, ebx
je 0x4a8dc3
mov dword [esp], ebx
mov dword [esp + 0x24], esi
call fcn.0043ef20
mov eax, dword [esp + 0x24]
add esp, 0xfc
pop ebx
pop esi
pop edi
pop ebp
ret
mov eax, dword [esp + 0x114]
lea ebx, [eax + 0x3f]
and ebx, 0xffffffc0
cmp edi, ebp
jbe 0x4a8dfd
jmp 0x4a90d0
xor esi, esi
lea esi, [esi]
mov ebx, dword [esp + 0x30]
mov dword [esp], ebx
call fcn.0041dc40
mov dword [esp], ebx
call fcn.0041dac0
jmp 0x4a9100
mov eax, dword [esp + 0x134]
mov dword [esp + 8], 0
mov dword [esp + 4], 2
mov dword [esp], eax
call fcn.0043c0d0
test eax, eax
je 0x4a90f6
mov eax, dword [esp + 0x134]
mov dword [esp + 8], 0
mov dword [esp + 4], 3
mov dword [esp], eax
call fcn.0043c0d0
test eax, eax
je 0x4a90f6
lea eax, [esp + edi + 0xae]
mov dword [esp + 0x118], edi
mov edi, dword [esp + 0x64]
mov dword [esp + 0x5c], 0
mov dword [esp + 0x48], eax
mov eax, dword [esp + 0x3c]
mov dword [esp + 4], 0
mov dword [esp], eax
call fcn.0041e570
mov dword [esp + 0x34], 0
mov dword [esp + 0x38], 0
test esi, esi
js 0x4a9225
add byte [esp + esi + 0xb0], 1
jne 0x4a9225
mov eax, dword [esp + 0x48]
lea ecx, [esp + 0xaf]
jmp 0x4a9221
movzx edx, byte [eax]
sub eax, 1
add edx, 1
mov byte [eax + 1], dl
test dl, dl
jne 0x4a9225
cmp eax, ecx
jne 0x4a9211
mov eax, dword [esp + 0x11c]
mov dword [esp + 0x14], 0
mov dword [esp + 0xc], 0
mov dword [esp + 8], ebp
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x118]
mov dword [esp + 4], eax
lea eax, [esp + 0xb0]
mov dword [esp], eax
call fcn.004631e0
test eax, eax
je 0x4a90f6
mov eax, dword [esp + 0x118]
mov dword [esp + 8], edi
mov dword [esp], ebp
mov dword [esp + 4], eax
call fcn.0041e5c0
test eax, eax
je 0x4a90f6
mov eax, dword [esp + 0x34]
mov dword [esp + 4], edi
mov dword [esp], edi
mov dword [esp + 8], eax
call fcn.00435da0
test eax, eax
je 0x4a90f6
mov eax, dword [esp + 0x3c]
mov dword [esp + 8], edi
mov dword [esp + 4], eax
mov dword [esp], eax
call fcn.00433830
test eax, eax
je 0x4a90f6
add dword [esp + 0x38], 1
mov eax, dword [esp + 0x44]
add dword [esp + 0x34], eax
mov eax, dword [esp + 0x38]
cmp dword [esp + 0x40], eax
jge 0x4a91f6
mov eax, dword [esp + 0x60]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x3c]
mov dword [esp], eax
call fcn.0041e960
test eax, eax
je 0x4a90f6
mov eax, dword [esp + 0x3c]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x68]
mov dword [esp], eax
call fcn.0041e2c0
test eax, eax
je 0x4a90f6
mov eax, dword [esp + 0x68]
mov ecx, dword [esp + 0x54]
mov dword [esp + 4], eax
mov dword [esp + 8], ecx
mov dword [esp], eax
call fcn.00433830
test eax, eax
je 0x4a90f6
mov edx, dword [esp + 0x24]
mov dword [esp], edi
mov dword [esp + 4], edx
call fcn.00435be0
test eax, eax
je 0x4a90f6
mov edx, dword [esp + 0x30]
mov eax, dword [esp + 0x68]
mov dword [esp + 0xc], edi
mov dword [esp], 0
mov dword [esp + 0x10], edx
mov edx, dword [esp + 0x6c]
mov dword [esp + 8], eax
mov dword [esp + 4], edx
call fcn.0041f5b0
test eax, eax
je 0x4a90f6
call fcn.0041e070
mov edx, dword [esp + 0x6c]
mov dword [esp], edi
mov dword [esp + 4], edx
mov dword [esp + 8], eax
call fcn.004338f0
test eax, eax
je 0x4a90f6
mov eax, dword [esp + 0x68]
mov dword [esp + 8], edi
mov dword [esp + 4], eax
mov eax, dword [esp + 0x28]
mov dword [esp], eax
call fcn.004338f0
test eax, eax
je 0x4a90f6
mov ecx, dword [esp + 0x54]
mov eax, dword [esp + 0x28]
mov dword [esp + 4], ecx
mov dword [esp], eax
call fcn.0041e790
test eax, eax
js 0x4a940b
mov eax, dword [esp + 0x134]
mov dword [esp + 0xc], 1
mov dword [esp + 4], 0x32
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x30]
mov dword [esp + 8], eax
mov eax, dword [esp + 0x28]
mov dword [esp], eax
call fcn.0043c150
cmp eax, 0
jg 0x4a947a
jne 0x4a90f6
add dword [esp + 0x5c], 1
cmp dword [esp + 0x5c], 0x1000
je 0x4a95c4
mov eax, dword [esp + 0x5c]
mov dword [esp + 4], 0
mov dword [esp + 8], eax
mov eax, dword [esp + 0x134]
mov dword [esp], eax
call fcn.0043c0d0
test eax, eax
jne 0x4a91d2
jmp 0x4a90f6
mov dword [esp + 4], edi
mov dword [esp], eax
call fcn.004334c0
mov dword [esp + 0x34], 1
jmp 0x4a8f72
call fcn.00450340
mov dword [esp + 0x11c], eax
jmp 0x4a8ddf
mov eax, dword [esp + 0x134]
mov dword [esp + 8], 1
mov edi, dword [esp + 0x118]
mov dword [esp + 4], 2
mov esi, dword [esp + 0x110]
mov dword [esp], eax
call fcn.0043c0d0
test eax, eax
je 0x4a90f6
call fcn.0041e070
mov dword [esp + 8], eax
mov eax, dword [esp + 0x28]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x54]
mov dword [esp], eax
call fcn.004338f0
test eax, eax
je 0x4a90f6
mov eax, dword [esp + 0x30]
mov dword [esp + 4], 0
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x24]
mov dword [esp + 0xc], eax
mov eax, dword [esp + 0x54]
mov dword [esp + 8], eax
mov eax, dword [esp + 0x64]
mov dword [esp], eax
call fcn.0041f5b0
test eax, eax
je 0x4a90f6
mov eax, dword [esp + 0x54]
mov dword [esp + 4], 2
mov dword [esp], eax
call fcn.0041e570
test eax, eax
je 0x4a90f6
mov eax, dword [esp + 0x30]
mov dword [esp + 8], eax
mov eax, dword [esp + 0x28]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x4c]
mov dword [esp], eax
call fcn.0043ef70
test eax, eax
je 0x4a90f6
mov ebp, dword [esp + 0x2c]
mov ebx, 2
mov eax, dword [esp + 0x4c]
mov dword [esp], ebp
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x30]
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x28]
mov dword [esp + 0xc], eax
mov eax, dword [esp + 0x64]
mov dword [esp + 8], eax
mov eax, dword [esp + 0x54]
mov dword [esp + 4], eax
call fcn.00441180
test eax, eax
je 0x4a90f6
cmp dword [ebp + 4], 1
jne 0x4a95d0
mov eax, dword [ebp]
cmp dword [eax], 1
jne 0x4a95d0
mov ecx, dword [ebp + 0xc]
test ecx, ecx
jne 0x4a95d0
call fcn.0041e070
mov dword [esp + 8], eax
mov eax, dword [esp + 0x54]
mov dword [esp + 4], eax
mov dword [esp], eax
call fcn.00433830
test eax, eax
je 0x4a90f6
add ebx, 1
jmp 0x4a9551
mov edi, dword [esp + 0x118]
jmp 0x4a90c3
mov eax, dword [esp + 0x134]
mov dword [esp + 8], 1
mov dword [esp + 4], 3
mov dword [esp], eax
call fcn.0043c0d0
test eax, eax
je 0x4a9147
mov eax, dword [esi + 0xc]
test eax, eax
je 0x4a9606
mov dword [esp], eax
call fcn.0041e170
mov eax, dword [esi + 0x10]
test eax, eax
je 0x4a9615
mov dword [esp], eax
call fcn.0041e170
mov eax, dword [esi + 0x14]
test eax, eax
je 0x4a9624
mov dword [esp], eax
call fcn.0041e170
mov eax, dword [esp + 0x28]
mov dword [esp], eax
call fcn.0041e3d0
mov dword [esi + 0xc], eax
mov eax, dword [esp + 0x24]
mov dword [esp], eax
call fcn.0041e3d0
mov dword [esi + 0x10], eax
mov eax, dword [esp + 0x2c]
mov dword [esp], eax
call fcn.0041e3d0
mov edx, dword [esi + 0xc]
test edx, edx
mov dword [esi + 0x14], eax
je 0x4a9147
mov ebp, dword [esi + 0x10]
mov esi, 0
test ebp, ebp
je 0x4a9150
test eax, eax
je 0x4a9150
mov esi, dword [esp + 0x12c]
test esi, esi
je 0x4a968c
mov eax, dword [esp + 0x12c]
mov ecx, dword [esp + 0x5c]
mov dword [eax], ecx
mov ecx, dword [esp + 0x130]
test ecx, ecx
je 0x4a96a0
mov eax, dword [esp + 0x130]
mov dword [eax], ebx
mov edx, dword [esp + 0x128]
mov esi, 1
test edx, edx
je 0x4a9150
mov eax, dword [esp + 0x50]
mov dword [esp + 8], edi
mov dword [esp + 4], eax
mov eax, dword [esp + 0x128]
mov dword [esp], eax
call sub.msvcrt.dll_memcpy
jmp 0x4a9150