Function at 0x4942d0
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x14
push ebx
mov ebx, dword [ebp + 8]
push esi
mov esi, dword [ebx + 8]
push edi
mov eax, esi
mov dword [ebp - 8], 0
call fcn.00478f10
mov edi, dword [ebp + 0xc]
mov ecx, eax
mov al, byte [edi + 0x2c]
shr al, 4
not al
and al, 2
or al, 0x41
cmp byte [ebp + 0x2c], 0
mov dword [ebp - 0xc], ecx
mov byte [ebp - 1], al
jne 0x494326
movsx edx, word [ebp + 0x20]
push edx
mov edx, dword [ebp + 0x1c]
push edx
push ecx
mov ecx, dword [ebp + 0x14]
movzx edx, al
push ecx
push edx
mov eax, esi
call fcn.00478e60
add esp, 0x14
mov eax, dword [ebx]
test dword [eax + 0x18], 0x80000
je 0x494341
mov ecx, edi
call fcn.00495cf0
test eax, eax
jne 0x49434b
cmp dword [edi + 0x10], eax
jne 0x49434b
cmp dword [ebp + 0x10], 0
je 0x494483
movzx eax, byte [ebp + 0x28]
push eax
push edi
push 3
push 0
mov dword [ebp - 0x14], eax
mov eax, dword [ebp + 0x10]
push 0
push ebx
call fcn.0048cb60
push edi
push ebx
mov dword [ebp + 0x2c], eax
call fcn.004966e0
or dword [ebp + 0x2c], eax
movsx ecx, word [edi + 0x26]
mov eax, dword [ebx + 0x4c]
lea edx, [ecx + eax + 1]
lea ebx, [eax + 1]
mov eax, dword [ebp + 8]
mov dword [eax + 0x4c], edx
mov eax, dword [esi + 0x20]
mov ecx, dword [esi + 0x18]
add esp, 0x20
mov dword [ebp - 8], ebx
mov dword [ebp - 0x10], eax
cmp dword [ecx + 0x58], eax
jg 0x4943a8
push esi
call fcn.00478b00
add esp, 4
test eax, eax
jne 0x4943d1
mov eax, dword [ebp - 0x10]
inc dword [esi + 0x20]
mov ecx, dword [ebp + 0x1c]
lea edx, [eax + eax*2]
mov eax, dword [esi + 4]
lea eax, [eax + edx*8]
mov dword [eax + 4], ecx
xor ecx, ecx
mov byte [eax + 3], 0
mov dword [eax + 8], ebx
mov dword [eax + 0xc], ecx
mov dword [eax + 0x10], ecx
mov word [eax], 0x21
mov dword [eax + 0x14], ecx
xor ecx, ecx
xor edx, edx
mov dword [ebp - 0x10], ecx
cmp dx, word [edi + 0x26]
jge 0x49441f
mov edi, edi
mov eax, dword [ebp + 0x2c]
cmp eax, 0xffffffff
je 0x4943f8
cmp ecx, 0x1f
jg 0x494413
mov edx, 1
shl edx, cl
test eax, edx
je 0x494413
lea eax, [ecx + ebx + 1]
push eax
push ecx
mov ecx, dword [ebp + 0x14]
push ecx
push edi
mov ebx, esi
call fcn.00476370
mov ecx, dword [ebp - 0x10]
mov ebx, dword [ebp - 8]
add esp, 0x10
movsx edx, word [edi + 0x26]
inc ecx
mov dword [ebp - 0x10], ecx
cmp ecx, edx
jl 0x4943e0
mov ecx, dword [ebp - 0xc]
mov edx, dword [ebp - 0x14]
mov eax, dword [esi + 0x20]
push ecx
mov ecx, dword [ebp + 8]
push edx
push ebx
push edi
push 1
push 0
mov dword [ebp + 0x2c], eax
mov eax, dword [ebp + 0x10]
push 0x6d
push eax
push ecx
call fcn.0048cb00
mov edx, dword [ebp + 0x2c]
add esp, 0x24
cmp edx, dword [esi + 0x20]
jge 0x49446d
movsx eax, word [ebp + 0x20]
mov ecx, dword [ebp + 0x1c]
mov edx, dword [ebp - 0xc]
push eax
mov eax, dword [ebp + 0x14]
push ecx
movzx ecx, byte [ebp - 1]
push edx
push eax
push ecx
mov eax, esi
call fcn.00478e60
add esp, 0x14
mov eax, dword [ebp + 8]
push 0
push 0
push 0
push ebx
push edi
call fcn.004960f0
mov ebx, dword [ebp + 8]
add esp, 0x14
cmp dword [edi + 0xc], 0
jne 0x494562
mov edx, dword [ebp + 0x18]
mov eax, dword [ebp + 0x14]
push 0
push edx
push eax
push ebx
mov eax, edi
call fcn.00494690
mov eax, dword [esi + 0x20]
mov ecx, dword [esi + 0x18]
add esp, 0x10
mov dword [ebp + 0x2c], eax
cmp dword [ecx + 0x58], eax
jg 0x4944c0
push esi
call fcn.00478b00
add esp, 4
test eax, eax
jne 0x4944f1
mov eax, dword [ebp + 0x2c]
inc dword [esi + 0x20]
mov ecx, dword [ebp + 0x14]
lea edx, [eax + eax*2]
mov eax, dword [esi + 4]
lea eax, [eax + edx*8]
xor edx, edx
cmp byte [ebp + 0x24], dl
mov dword [eax + 4], ecx
setne dl
xor ecx, ecx
mov byte [eax + 3], 0
mov dword [eax + 0xc], ecx
mov dword [eax + 0x10], ecx
mov word [eax], 0x4a
mov dword [eax + 0x14], ecx
mov dword [eax + 8], edx
cmp byte [ebp + 0x24], 0
je 0x494562
mov ecx, dword [edi]
mov ebx, dword [esi + 4]
mov edi, dword [esi]
mov dword [ebp + 0x2c], ecx
test ebx, ebx
je 0x494555
cmp byte [edi + 0x40], 0
jne 0x494555
mov eax, dword [esi + 0x20]
lea eax, [eax + eax*2 - 3]
mov ecx, dword [ebx + eax*8 + 0x10]
lea ebx, [ebx + eax*8]
movsx eax, byte [ebx + 1]
mov dword [ebp - 0x14], ebx
call fcn.004791c0
mov ecx, dword [ebp + 0x2c]
xor eax, eax
mov dword [ebx + 0x10], eax
cmp ecx, eax
jne 0x494539
mov dword [ebx + 0x10], eax
mov byte [ebx + 1], al
jmp 0x49455c
call fcn.0044f690
mov edx, dword [esi]
mov edi, eax
mov ebx, ecx
call fcn.0044f5d0
mov ecx, dword [ebp - 0x14]
mov dword [ecx + 0x10], eax
mov byte [ecx + 1], 0xff
jmp 0x49455c
xor eax, eax
call fcn.004791c0
mov edi, dword [ebp + 0xc]
mov ebx, dword [ebp + 8]
mov ecx, dword [ebx]
test dword [ecx + 0x18], 0x80000
je 0x49463b
mov edx, dword [edi]
mov eax, edx
test edx, edx
jne 0x494580
xor ecx, ecx
mov dword [ebp + 0xc], ecx
jmp 0x494597
cmp byte [edx], 0
je 0x49458b
inc eax
cmp byte [eax], 0
jne 0x494585
sub eax, edx
and eax, 0x3fffffff
mov ecx, eax
mov dword [ebp + 0xc], eax
mov eax, dword [edi + 0x44]
add eax, 0x38
cmp dword [eax + 0xc], 0
mov dword [ebp - 0x10], eax
je 0x4945e8
xor eax, eax
mov dword [ebp + 8], ecx
mov dword [ebp + 0x2c], edx
test ecx, ecx
jle 0x4945d9
movzx edx, byte [edx]
movzx ecx, byte [edx + 0x548ae0]
lea edx, [eax*8]
xor ecx, edx
mov edx, dword [ebp + 0x2c]
xor eax, ecx
mov ecx, dword [ebp + 8]
dec ecx
inc edx
mov dword [ebp + 0x2c], edx
mov dword [ebp + 8], ecx
test ecx, ecx
jg 0x4945b2
mov ecx, dword [ebp - 0x10]
xor edx, edx
div dword [ecx]
mov ecx, dword [ebp + 0xc]
mov eax, dword [ebp - 0x10]
jmp 0x4945ea
xor edx, edx
push ecx
mov ecx, dword [edi]
push ecx
call fcn.004478c0
add esp, 8
test eax, eax
je 0x49463b
mov eax, dword [eax + 8]
mov dword [ebp + 0x2c], eax
test eax, eax
je 0x49463b
jmp 0x494609
mov eax, dword [ebp + 0x2c]
push 0
push eax
push edi
mov eax, ebx
call fcn.00496980
add esp, 0xc
test eax, eax
je 0x49462e
mov edx, dword [ebp - 8]
push 0
push 2
push edx
push edi
push eax
push ebx
call fcn.0048c900
add esp, 0x18
mov eax, dword [ebp + 0x2c]
mov eax, dword [eax + 0xc]
mov dword [ebp + 0x2c], eax
test eax, eax
jne 0x494606
mov ecx, dword [ebp - 0xc]
movzx edx, byte [ebp + 0x28]
mov eax, dword [ebp - 8]
push ecx
mov ecx, dword [ebp + 0x10]
push edx
push eax
push edi
push 2
push 0
push 0x6d
push ecx
push ebx
call fcn.0048cb00
mov ecx, dword [esi + 0x18]
or eax, 0xffffffff
add esp, 0x24
sub eax, dword [ebp - 0xc]
js 0x494674
mov edx, dword [ecx + 0x74]
test edx, edx
je 0x494674
mov edi, dword [esi + 0x20]
mov dword [edx + eax*4], edi
mov edx, dword [esi + 0x20]
pop edi
dec edx
pop esi
mov dword [ecx + 0x5c], edx
pop ebx
mov esp, ebp
pop ebp
ret