Function at 0x43fcde
Capabilities:
Encode data using xor

Disassembly:
push ebp
lea ebp, [esp - 0x68]
sub esp, 0x94
push ebx
push esi
mov esi, eax
push edi
mov edi, dword [ebp + 0x70]
mov eax, dword [edi + 0x8588]
mov eax, dword [eax + 0xc]
mov ecx, dword [edi + 8]
mov dword [ebp + 0x60], eax
mov eax, dword [edi + 4]
mov dword [ebp + 0x44], eax
mov eax, dword [edi + 0x85d8]
dec eax
shl eax, 4
push 0x10
pop edx
sub ecx, eax
mov dword [ebp + 0x4c], edx
cmp ecx, edx
ja 0x43fd1f
mov dword [ebp + 0x4c], ecx
mov cl, byte [edi + 0x8084]
mov byte [ebp + 0x5f], cl
mov cl, byte [edi + 0x8085]
mov byte [ebp + 0x2b], cl
mov ecx, dword [edi + 0x8588]
mov edx, dword [ecx + 0x28]
mov dword [ebp + 0x24], edx
xor edx, edx
div dword [ebp + 0x60]
mov ecx, dword [ecx + 0x2c]
mov ebx, dword [edi + 0x64]
and dword [ebp + 0x54], 0
cmp dword [ebp + 0x60], 1
mov dword [ebp + 0x48], ebx
lea eax, [ecx + eax*4]
mov dword [ebp + 0x2c], eax
jbe 0x43fd6b
inc dword [ebp + 0x54]
mov ecx, dword [ebp + 0x54]
xor eax, eax
inc eax
shl eax, cl
cmp eax, dword [ebp + 0x60]
jb 0x43fd5b
and dword [ebp + 0x38], 0
test ebx, ebx
jbe 0x43fd90
lea eax, [edi + 0x8660]
mov ecx, dword [ebp + 0x38]
mov edx, dword [eax]
and ecx, 0xf
inc dword [ebp + 0x38]
add eax, 4
mov dword [ebp + ecx*4 - 0x2c], edx
cmp dword [ebp + 0x38], ebx
jb 0x43fd79
cmp dword [edi + 0x8590], 0
je 0x43fdab
mov eax, dword [edi + 0x8760]
mov dword [ebp - 0x28], eax
mov eax, dword [edi + 0x8764]
mov dword [ebp - 0x24], eax
mov eax, dword [edi + 0x10]
dec eax
je 0x4403a9
dec eax
je 0x4402ac
dec eax
je 0x4401bd
dec eax
je 0x4400f0
dec eax
je 0x44000d
dec eax
je 0x43ff40
dec eax
jne 0x44048e
mov edx, esi
mov dword [ebp + 0x58], edx
cmp esi, dword [ebp + 0x4c]
jae 0x44048e
mov eax, dword [ebp + 0x60]
shl esi, 4
shl eax, 4
mov dword [ebp + 0x50], esi
mov dword [ebp + 0x40], eax
mov ecx, dword [ebp + 0x54]
mov eax, dword [ebp + 0x7c]
mov esi, edx
shr esi, cl
mov ecx, dword [ebp + 0x2c]
mov dword [ebp + 0x64], eax
mov ecx, dword [ecx + esi*4]
mov dword [ebp + 0x3c], ecx
cmp eax, dword [ebp + 0x44]
jae 0x43ff26
mov ecx, dword [ebp + 0x54]
and dword [ebp + 0x38], 0
mov edx, eax
shr edx, cl
mov ecx, dword [ebp + 0x24]
mov ecx, dword [ecx + edx*4]
add ecx, dword [ebp + 0x3c]
cmp dword [ebp + 0x48], 0
mov edx, dword [edi + 0x8090]
lea ecx, [edx + ecx*4]
mov dword [ebp + 0x34], ecx
jbe 0x43ff14
mov edi, dword [ebp + 0x50]
movzx ecx, byte [ebp + 0x5f]
mov edx, eax
and edx, 0xf
lea edx, [edx + edi + 0x5b3f40]
xor esi, esi
mov dword [ebp + 0x14], edx
movsx edx, byte [ebp + 0x2b]
and eax, 0xfffffff0
inc esi
shl eax, 4
mov dword [ebp + 0x20], 0x17
shl esi, cl
sub dword [ebp + 0x20], ecx
mov dword [ebp + 0x30], ecx
mov dword [ebp + 0x18], eax
mov dword [ebp + 0x1c], edx
jmp 0x43fe82
mov eax, dword [ebp + 0x18]
mov ecx, dword [ebp + 0x14]
movzx ecx, byte [ecx]
add ecx, eax
mov eax, dword [ebp + 0x38]
and eax, 0xf
mov eax, dword [ebp + eax*4 - 0x2c]
mov eax, dword [eax + ecx*4]
imul eax, dword [ebp + 0x74]
mov ecx, dword [ebp + 0x78]
sar eax, cl
mov ecx, dword [ebp + 0x30]
mov edi, eax
sar edi, 0x1f
mov ebx, edi
xor ebx, eax
sub ebx, edi
mov edx, ebx
shr edx, cl
lea eax, [esi - 1]
and eax, ebx
or eax, esi
test edx, edx
jne 0x43fec0
xor eax, esi
inc edx
push 0x7f
pop ecx
sub ecx, dword [ebp + 0x1c]
add edx, ecx
cmp eax, esi
jge 0x43fee4
cmp edx, 1
jle 0x43fedc
test eax, eax
jle 0x43fedc
add eax, eax
dec edx
cmp eax, esi
jl 0x43fecc
cmp eax, esi
jge 0x43fee4
xor edx, edx
jmp 0x43fee6
xor eax, esi
mov ecx, dword [ebp + 0x20]
shl eax, cl
mov ecx, dword [ebp + 0x38]
shl edx, 0x17
and edi, 0x80000000
or eax, edx
mov edx, dword [ebp + 0x34]
or eax, edi
mov dword [edx + ecx*4], eax
inc ecx
mov dword [ebp + 0x38], ecx
cmp ecx, dword [ebp + 0x48]
jb 0x43fe7f
mov edi, dword [ebp + 0x70]
mov eax, dword [ebp + 0x64]
add eax, dword [ebp + 0x60]
mov dword [ebp + 0x64], eax
cmp eax, dword [ebp + 0x44]
jb 0x43fe1b
mov edx, dword [ebp + 0x58]
add edx, dword [ebp + 0x60]
mov eax, dword [ebp + 0x40]
add dword [ebp + 0x50], eax
mov dword [ebp + 0x58], edx
cmp edx, dword [ebp + 0x4c]
jb 0x43fdfc
jmp 0x44048e
mov edx, esi
mov dword [ebp + 0x58], edx
cmp esi, dword [ebp + 0x4c]
jae 0x44048e
mov eax, dword [ebp + 0x60]
shl esi, 4
shl eax, 4
mov dword [ebp + 0x70], esi
mov dword [ebp + 0x40], eax
mov ecx, dword [ebp + 0x54]
mov eax, dword [ebp + 0x7c]
mov esi, edx
shr esi, cl
mov ecx, dword [ebp + 0x2c]
mov dword [ebp + 0x64], eax
mov ecx, dword [ecx + esi*4]
mov dword [ebp + 0x3c], ecx
cmp eax, dword [ebp + 0x44]
jae 0x43fff3
mov ecx, dword [ebp + 0x54]
mov edx, eax
shr edx, cl
mov ecx, dword [ebp + 0x24]
mov ecx, dword [ecx + edx*4]
add ecx, dword [ebp + 0x3c]
mov edx, dword [edi + 0x8090]
lea ecx, [edx + ecx*4]
xor edx, edx
mov dword [ebp + 0x34], ecx
cmp dword [ebp + 0x48], edx
jbe 0x43ffe5
mov esi, dword [ebp + 0x70]
mov ecx, eax
and ecx, 0xf
lea esi, [ecx + esi + 0x5b3f40]
movzx ecx, byte [ebp + 0x5f]
and eax, 0xfffffff0
shl eax, 4
mov dword [ebp + 0x30], ecx
movzx ecx, byte [esi]
add ecx, eax
mov ebx, edx
and ebx, 0xf
mov ebx, dword [ebp + ebx*4 - 0x2c]
mov ebx, dword [ebx + ecx*4]
imul ebx, dword [ebp + 0x74]
mov ecx, dword [ebp + 0x78]
sar ebx, cl
mov ecx, dword [ebp + 0x30]
shl ebx, cl
mov ecx, dword [ebp + 0x34]
mov dword [ecx + edx*4], ebx
inc edx
cmp edx, dword [ebp + 0x48]
jb 0x43ffb7
mov eax, dword [ebp + 0x64]
add eax, dword [ebp + 0x60]
mov dword [ebp + 0x64], eax
cmp eax, dword [ebp + 0x44]
jb 0x43ff78
mov edx, dword [ebp + 0x58]
add edx, dword [ebp + 0x60]
mov eax, dword [ebp + 0x40]
add dword [ebp + 0x70], eax
mov dword [ebp + 0x58], edx
cmp edx, dword [ebp + 0x4c]
jb 0x43ff5d
jmp 0x44048e
movzx ecx, byte [ebp + 0x5f]
mov eax, SysReAllocString
sar eax, cl
mov dword [ebp + 0x30], ecx
mov ecx, dword [ebp + 0x78]
shl eax, cl
cdq
idiv dword [ebp + 0x74]
mov edx, esi
mov dword [ebp + 0x58], edx
mov dword [ebp + 0x70], eax
cmp esi, dword [ebp + 0x4c]
jae 0x44048e
mov eax, dword [ebp + 0x60]
shl esi, 4
shl eax, 4
mov dword [ebp + 0x50], esi
mov dword [ebp + 0x40], eax
mov ecx, dword [ebp + 0x54]
mov eax, dword [ebp + 0x7c]
mov esi, edx
shr esi, cl
mov ecx, dword [ebp + 0x2c]
mov dword [ebp + 0x64], eax
mov ecx, dword [ecx + esi*4]
mov dword [ebp + 0x3c], ecx
cmp eax, dword [ebp + 0x44]
jae 0x4400d6
mov ecx, dword [ebp + 0x54]
mov edx, eax
shr edx, cl
mov ecx, dword [ebp + 0x24]
mov ecx, dword [ecx + edx*4]
add ecx, dword [ebp + 0x3c]
mov edx, dword [edi + 0x8090]
lea esi, [edx + ecx*4]
xor edx, edx
cmp dword [ebp + 0x48], edx
jbe 0x4400c8
mov ebx, dword [ebp + 0x50]
mov ecx, eax
and ecx, 0xf
lea ecx, [ecx + ebx + 0x5b3f40]
and eax, 0xfffffff0
mov dword [ebp + 0x34], ecx
shl eax, 4
mov ecx, dword [ebp + 0x34]
movzx ecx, byte [ecx]
mov ebx, edx
and ebx, 0xf
mov ebx, dword [ebp + ebx*4 - 0x2c]
add ecx, eax
mov ebx, dword [ebx + ecx*4]
add ebx, dword [ebp + 0x70]
mov ecx, dword [ebp + 0x78]
imul ebx, dword [ebp + 0x74]
sar ebx, cl
mov ecx, dword [ebp + 0x30]
shl ebx, cl
mov dword [esi + edx*4], ebx
inc edx
cmp edx, dword [ebp + 0x48]
jb 0x440097
mov eax, dword [ebp + 0x64]
add eax, dword [ebp + 0x60]
mov dword [ebp + 0x64], eax
cmp eax, dword [ebp + 0x44]
jb 0x44005f
mov edx, dword [ebp + 0x58]
add edx, dword [ebp + 0x60]
mov eax, dword [ebp + 0x40]
add dword [ebp + 0x50], eax
mov dword [ebp + 0x58], edx
cmp edx, dword [ebp + 0x4c]
jb 0x440044
jmp 0x44048e
mov dword [ebp + 0x58], esi
cmp esi, dword [ebp + 0x4c]
jae 0x44048e
mov eax, dword [ebp + 0x60]
shl esi, 4
shl eax, 4
mov dword [ebp + 0x70], esi
mov dword [ebp + 0x40], eax
mov ecx, dword [ebp + 0x54]
mov edx, dword [ebp + 0x58]
mov eax, dword [ebp + 0x7c]
shr edx, cl
mov ecx, dword [ebp + 0x2c]
mov ecx, dword [ecx + edx*4]
mov dword [ebp + 0x3c], ecx
jmp 0x440198
mov ecx, dword [ebp + 0x54]
mov eax, dword [ebp + 0x64]
shr eax, cl
mov ecx, dword [ebp + 0x24]
xor edx, edx
mov eax, dword [ecx + eax*4]
add eax, dword [ebp + 0x3c]
mov ecx, dword [edi + 0x8090]
lea ebx, [ecx + eax*2]
cmp dword [ebp + 0x48], edx
jbe 0x440192
mov esi, dword [ebp + 0x64]
mov ecx, dword [ebp + 0x70]
mov eax, esi
and eax, 0xf
lea eax, [eax + ecx + 0x5b3f40]
and esi, 0xfffffff0
mov dword [ebp + 0x34], eax
shl esi, 4
mov eax, dword [ebp + 0x34]
movzx eax, byte [eax]
add eax, esi
mov ecx, edx
and ecx, 0xf
mov ecx, dword [ebp + ecx*4 - 0x2c]
mov eax, dword [ecx + eax*4]
imul eax, dword [ebp + 0x74]
mov ecx, dword [ebp + 0x78]
sar eax, cl
mov ecx, eax
sar ecx, 0x1f
and eax, 0x7fff
xor eax, ecx
sub eax, ecx
mov word [ebx + edx*2], ax
inc edx
cmp edx, dword [ebp + 0x48]
jb 0x44015d
mov eax, dword [ebp + 0x64]
add eax, dword [ebp + 0x60]
mov dword [ebp + 0x64], eax
cmp eax, dword [ebp + 0x44]
jb 0x440121
mov eax, dword [ebp + 0x58]
add eax, dword [ebp + 0x60]
mov ecx, dword [ebp + 0x40]
add dword [ebp + 0x70], ecx
mov dword [ebp + 0x58], eax
cmp eax, dword [ebp + 0x4c]
jb 0x44010b
jmp 0x44048e
mov eax, esi
mov dword [ebp + 0x58], eax
cmp esi, dword [ebp + 0x4c]
jae 0x44048e
mov ecx, dword [ebp + 0x60]
shl esi, 4
shl ecx, 4
mov dword [ebp + 0x70], esi
mov dword [ebp + 0x40], ecx
mov ecx, dword [ebp + 0x54]
mov edx, dword [ebp + 0x7c]
mov esi, eax
shr esi, cl
mov ecx, dword [ebp + 0x2c]
mov dword [ebp + 0x64], edx
mov ecx, dword [ecx + esi*4]
mov dword [ebp + 0x3c], ecx
cmp edx, dword [ebp + 0x44]
jae 0x440292
mov ecx, dword [ebp + 0x54]
mov eax, edx
shr eax, cl
mov ecx, dword [ebp + 0x24]
xor ebx, ebx
mov eax, dword [ecx + eax*4]
add eax, dword [ebp + 0x3c]
mov ecx, dword [edi + 0x8090]
lea eax, [ecx + eax*2]
mov dword [ebp + 0x34], eax
cmp dword [ebp + 0x48], ebx
jbe 0x440280
mov ecx, dword [ebp + 0x70]
mov eax, edx
and eax, 0xf
lea esi, [eax + ecx + 0x5b3f40]
movzx eax, byte [ebp + 0x5f]
and edx, 0xfffffff0
shl edx, 4
mov dword [ebp + 0x30], eax
movzx eax, byte [esi]
add eax, edx
mov ecx, ebx
and ecx, 0xf
mov ecx, dword [ebp + ecx*4 - 0x2c]
mov eax, dword [ecx + eax*4]
imul eax, dword [ebp + 0x74]
mov ecx, dword [ebp + 0x78]
sar eax, cl
mov ecx, dword [ebp + 0x30]
shl eax, cl
cmp eax, 0xffff8000
jge 0x440265
mov eax, 0xffff8000
jmp 0x440270
mov ecx, 0x7fff
cmp eax, ecx
jle 0x440270
mov eax, ecx
mov ecx, dword [ebp + 0x34]
mov word [ecx + ebx*2], ax
inc ebx
cmp ebx, dword [ebp + 0x48]
jb 0x440238
mov edx, dword [ebp + 0x64]
add edx, dword [ebp + 0x60]
mov dword [ebp + 0x64], edx
cmp edx, dword [ebp + 0x44]
jb 0x4401f9
mov eax, dword [ebp + 0x58]
add eax, dword [ebp + 0x60]
mov ecx, dword [ebp + 0x40]
add dword [ebp + 0x70], ecx
mov dword [ebp + 0x58], eax
cmp eax, dword [ebp + 0x4c]
jb 0x4401da
jmp 0x44048e
mov ecx, dword [ebp + 0x78]
mov eax, 0x8000
shl eax, cl
cdq
idiv dword [ebp + 0x74]
mov edx, esi
mov dword [ebp + 0x58], edx
mov dword [ebp + 0x70], eax
cmp esi, dword [ebp + 0x4c]
jae 0x44048e
mov eax, dword [ebp + 0x60]
shl esi, 4
shl eax, 4
mov dword [ebp + 0x50], esi
mov dword [ebp + 0x40], eax
mov ecx, dword [ebp + 0x54]
mov eax, dword [ebp + 0x7c]
mov esi, edx
shr esi, cl
mov ecx, dword [ebp + 0x2c]
mov dword [ebp + 0x64], eax
mov ecx, dword [ecx + esi*4]
mov dword [ebp + 0x3c], ecx
cmp eax, dword [ebp + 0x44]
jae 0x44038f
mov ecx, dword [ebp + 0x54]
mov edx, eax
shr edx, cl
mov ecx, dword [ebp + 0x24]
xor ebx, ebx
mov ecx, dword [ecx + edx*4]
add ecx, dword [ebp + 0x3c]
mov edx, dword [edi + 0x8090]
lea ecx, [edx + ecx*2]
mov dword [ebp + 0x34], ecx
cmp dword [ebp + 0x48], ebx
jbe 0x44037d
mov edx, dword [ebp + 0x50]
mov ecx, eax
and ecx, 0xf
lea esi, [ecx + edx + 0x5b3f40]
movzx ecx, byte [ebp + 0x5f]
and eax, 0xfffffff0
shl eax, 4
mov dword [ebp + 0x30], ecx
movzx ecx, byte [esi]
mov edx, ebx
and edx, 0xf
mov edx, dword [ebp + edx*4 - 0x2c]
add ecx, eax
mov edx, dword [edx + ecx*4]
add edx, dword [ebp + 0x70]
mov ecx, dword [ebp + 0x78]
imul edx, dword [ebp + 0x74]
sar edx, cl
mov ecx, dword [ebp + 0x30]
shl edx, cl
test edx, edx
jge 0x440362
xor edx, edx
jmp 0x44036d
mov ecx, 0xffff
cmp edx, ecx
jle 0x44036d
mov edx, ecx
mov ecx, dword [ebp + 0x34]
mov word [ecx + ebx*2], dx
inc ebx
cmp ebx, dword [ebp + 0x48]
jb 0x440338
mov eax, dword [ebp + 0x64]
add eax, dword [ebp + 0x60]
mov dword [ebp + 0x64], eax
cmp eax, dword [ebp + 0x44]
jb 0x4402f9
mov edx, dword [ebp + 0x58]
add edx, dword [ebp + 0x60]
mov eax, dword [ebp + 0x40]
add dword [ebp + 0x50], eax
mov dword [ebp + 0x58], edx
cmp edx, dword [ebp + 0x4c]
jb 0x4402da
jmp 0x44048e
mov ecx, dword [ebp + 0x78]
mov eax, 0x80
shl eax, cl
mov dword [ebp + 0x58], esi
cdq
idiv dword [ebp + 0x74]
mov dword [ebp + 0x70], eax
cmp esi, dword [ebp + 0x4c]
jae 0x44048e
mov eax, dword [ebp + 0x60]
shl esi, 4
shl eax, 4
mov dword [ebp + 0x50], esi
mov dword [ebp + 0x40], eax
mov ecx, dword [ebp + 0x54]
mov edx, dword [ebp + 0x58]
mov eax, dword [ebp + 0x7c]
shr edx, cl
mov ecx, dword [ebp + 0x2c]
mov ecx, dword [ecx + edx*4]
mov dword [ebp + 0x3c], ecx
jmp 0x44046a
mov ecx, dword [ebp + 0x54]
mov eax, dword [ebp + 0x64]
and dword [ebp + 0x38], 0
shr eax, cl
mov ecx, dword [ebp + 0x24]
mov eax, dword [ecx + eax*4]
add eax, dword [edi + 0x8090]
add eax, dword [ebp + 0x3c]
cmp dword [ebp + 0x48], 0
jbe 0x440464
mov esi, dword [ebp + 0x64]
mov edx, dword [ebp + 0x50]
mov ecx, esi
and ecx, 0xf
and esi, 0xfffffff0
lea ebx, [ecx + edx + 0x5b3f40]
shl esi, 4
movzx ecx, byte [ebx]
mov edx, dword [ebp + 0x38]
and edx, 0xf
mov edx, dword [ebp + edx*4 - 0x2c]
add ecx, esi
mov edx, dword [edx + ecx*4]
add edx, dword [ebp + 0x70]
mov ecx, dword [ebp + 0x78]
imul edx, dword [ebp + 0x74]
sar edx, cl
test edx, edx
jge 0x44044a
xor edx, edx
jmp 0x440455
mov ecx, 0xff
cmp edx, ecx
jle 0x440455
mov edx, ecx
mov ecx, dword [ebp + 0x38]
mov byte [eax + ecx], dl
inc ecx
mov dword [ebp + 0x38], ecx
cmp ecx, dword [ebp + 0x48]
jb 0x440424
mov eax, dword [ebp + 0x64]
add eax, dword [ebp + 0x60]
mov dword [ebp + 0x64], eax
cmp eax, dword [ebp + 0x44]
jb 0x4403eb
mov eax, dword [ebp + 0x58]
add eax, dword [ebp + 0x60]
mov ecx, dword [ebp + 0x40]
add dword [ebp + 0x50], ecx
mov dword [ebp + 0x58], eax
cmp eax, dword [ebp + 0x4c]
jb 0x4403d5
pop edi
pop esi
pop ebx
add ebp, 0x68
leave
ret